对不起,我希望你能理解我。如果某个操作取决于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
,我会检查Store
中是否有dataA
,如果没有,我会先发送actionA
。但是actionA
是异步操作,当actionA
完成时我无法获得。 那么如何处理这个问题呢?
实际上,在'actionA'的'fetchDateFromServer()'中,我只是使用获取polyfill。问题是在某些情况下,我只需要调度'actionA'而不调度'actionB'。 – hronro