Извините за мой английский, надеюсь, вы меня поймете.Что делать, если действие зависит от другого действия async в Redux?
Я использую redux-thunk
для асинхронных действий.
// actionA.js
export function actionA() {
return fetch('api call')
.then((data) => ({
type: 'actionA',
data: data
}))
}
// reducer.js
export function reducer(state, action) {
...
if(action.type === 'actionA') {
return {
...,
dataA: action.data,
...
};
}
}
// actionB.js
export function actionB() {
return (dispatch, getState) => {
if(!getState().dataA) {
dispatch(actionA());
}
doSomethingWithDataA(getState().dataA);
};
}
В некоторых случаях, мне нужно лишь отправить actionA
без диспетчерских actionB
. Но когда я отправляю actionB
, actionB
будет использовать dataA
, а dataA
создан actionA
. Так что в actionB
, я проверю, есть ли dataA
в Store
, если нет, я отправлю actionA
. Но actionA
- это асинхронное действие, я не могу получить, когда сделано actionA
. Итак, как бороться с этой проблемой?
Фактически в 'fetchDateFromServer()' из 'actionA', я просто использую полис заполнения. И проблема в некоторых случаях, мне нужно отправить 'actionA' без отправки' actionB'. – hronro