У меня есть действие, которое обновляет некоторые критерии поиска в Redux. Я хотел бы сразу получить некоторые данные из API на основе этих локальных критериев. Проблема в том, что, хотя отправка действия критериев поиска является синхронной, она не будет завершена до начала отправки результатов поиска.Как отправить действие, когда другое синхронное действие завершено в Redux
В этом примере критерии не будут обновлены до вызова API:
this.props.dispatch(updateLocalCriteria(someData));
this.props.dispatch(fetchApiResults(this.props.criteria))
Я пропускаю что-то очевидное? Я могу придумать несколько хакерских способов справиться с этим, но что это лучший способ? Должен ли я устанавливать флаг при обновлении критериев поиска и получать результаты в componentDidUpdate()
, если флаг является истинным? Или я должен сделать updateLocalCriteria()
асинхронным, чтобы я мог цепочки fetchApiResults()
в цепочке обещаний?
EDIT
Я думаю, что я нашел свой ответ. Я могу получить текущее состояние в пределах fetchApiResults()
. Поэтому я могу получить текущие критерии поиска перед вызовом api.
function fetchApiResults() {
return (dispatch, getState) => {
const state = getState();
// fetch data and dispatch...
'updateLocalCriteria()' просто обновляет одно свойство критериев, но я хочу отправить все критерии в 'fetchApiResults()'. По-моему, мне все равно нужно получить текущее состояние в 'updateCriteriaAndFetch()' перед вызовом 'fetchApiResults()'. –
В этом случае да –