У меня есть создатель действий, который отправляет 3 действия.Но я хочу подождать, пока третья отправка обновит состояние, и я хочу использовать последнее состояние в следующей отправке.Я думал, что отправка асинхронная.Но когда я выполняю getState () после третьей отправки, это возвращает мне старое состояние.Что я делаю неправильно?Я использую Redux Thunk.
Я пытался обернуть каждую отправку в Promise и объединить в цепочку.Это не принесло пользы.
import * as actionTypes from '../actionTypes/index';
import * as actionCreators from '../actionCreators/index';
const authSuccess = (user) => {
return {
type: actionTypes.ON_AUTH_SUCCESS,
user: user
}
}
export const auth = (user) => {
return (dispatch, getState) => {
dispatch(authSuccess(user));
dispatch(actionCreators.setAdditionalUserMeta(user.uid));
dispatch(actionCreators.fetchExpenses(user.uid));
let latestState = getState();
console.log(latestState); //here i receive the old state
dispatch(actionCreators.calculateAmountSpent(latestState.fetch.expenses));
}
}
В третьей передаче я использую axios, чтобы извлечь некоторые расходы из базы данных firebase и обновить состояние с этим объектом расходов.И я хочу использовать этот объект расходов для вызова следующей отправки, которая должна рассчитать все расходы.Я обернул console.log внутри setTimeout для 2s, и он работал нормально.Что я здесь не так делаю?