товаров
изменение параметров сортировки
если я вызываю в компоненте последовательно изменение параметров сортировки и получение списка товаров, то данные сортируются только после ререндера компонента.
как можно получить обновленные данные из редьюсора?
Ты сортируешь в селекторе? Пока не сильно понятно в чем проблема у тебя
Не совсем понял вопрос про селектор. Это инструмент? У меня вот такое состояние у редьюсора const initialState: ProductsListState = { products: [], isLoaded: false, count: 0, offset: 0, onPage: 9, descending: "DESC", orderBy: "price", category_id: 0 }; Соответственно, сама сортировка - изменение состояния const sortProductsList = (state: ProductsListState, payload: SortProductsListActionPayload) => { return { ...state, orderBy: payload.orderBy, descending: payload.descending } }; Я только недавно изучаю реакт, и пока что возникают сложности, на подобии этой
Селектор это функция с помощью которой ты получаешь какую то часть состояния в компоненте
Код лучше кидать на codesandbox, gist или скриншот, если он помещается
Компонент получает состояние из редукса через mapStateToProps. Далее, в sortHandle у меня следующий код: this.props.sortProductsList(sortPayload); this.props.getProductsList(); Я ожидаю, что этот код изменит состояние в редуксе, после чего выполнится getProductsList - который получает данные с апи отправляя параметры сортировки из изначального стейта. Но получается так, что состояние сортировки изменяется, но при этом getProductsList использует старое состояние Очень коряво объяснил, не знаю, как сформулировать грамотно. Селектор это https://redux.js.org/recipes/computing-derived-data "Memoized Selector"?
Ну ты сортируешь в mapStateToProps массив products в зависимости от поля descending?
mapStateToProps это тоже селектор, я просто про функции говорю, а мемоизированная она или нет, пока не важно
Нет, я не совсем понял вопрос, как сортировать массив products в mapStateToProps, если эта функция предназначена для помещения Redux State в Components.Props? Я не очень давно изучаю все react + redux, и делаю +- по документации Вот код коннекта редукса к компоненту function mapStateToProps(state: AppState) { return { productsList: state.productsList }; } function matchDispatchProps(dispatch: Dispatch) { return bindActionCreators({ getProductsList: getProductsList, sortProductsList: sortProductsList, clearProductsList: clearProductsList }, dispatch) } export default connect(mapStateToProps, matchDispatchProps)(ProductsList);
Не кидай код в чат, невозможно читать. Ты должен в mapStateToProps сортировать массив products Только не забывай что sort() мутирует и тебе нужно скопировать массив
Обсуждают сегодня