Я использую response-redux и добавил поле 'filters' в мое состояние redux, которое содержит все фильтры, которые я хочу использовать для получения данных из моего db.Использование обновленного состояния редукции сразу после отправки
Моя цель - получать данные от db с обновленными фильтрами сразу после добавления фильтра. Это то, что я до сих пор:
--- actions.js ---
...
export function addFilter(filter, value) {
return {
type: 'ADD_FILTER',
filter: filter,
value: value
}
}
...
--- reducer.js ---
...
case 'ADD_FILTER':
return update(state, {
filters: {
$merge: {
[action.filter]: action.value
}
}
});
...
--- filteringComponent.js ---
...
addFilterAndUpdateData(filter, value) {
this.props.addFilter(filter, value);
this.props.getData(this.props.filters);
// this.props.filters is connected to state.filters.
// it DOES update, but not right away. so when getData is dispatched
// this.props.filters holds the old object and not the updated one
}
...
После добавления фильтра, я хочу, чтобы отправить сразу действие GetData, чтобы получить данные с последними фильтрами из дб.
Проблема в том, что это.props.filters не обновлено. Есть ли способ «ждать» обновления?
Лучшее решение, к которому я придумал до сих пор, - использовать компоненты componentWillReceiveProps, но затем я должен добавить условия (так как я не обязательно хочу отправлять getData каждый раз, когда меняют реквизиты, только когда это происходит в результате фильтров)
Какой подход был бы здесь «реакция-редукция»?