我正在使用一些react / redux样板,并且试图找到一种在第一个操作完成时调度操作的方法。
自从我使用redux已经有一段时间了,所以我茫然地知道为什么这种用于分派一个动作的配置不起作用。
在此示例中,假设actionTwo()与actionOne()基本相同,我只希望在actionOne承诺之后立即将其触发
返回。
我的问题是,为什么此配置有问题?在完成操作后立即触发操作的正确方法是什么?
import axios from 'axios';
import type { ThunkAction } from '../types';
export const actionOne = (value1, value2): ThunkAction => dispatch =>
axios
.post('/api/route', {
params: {
username: value1,
password: value2
},
credentials: 'include'
})
.then(response => {
dispatch(actionTwo()); //this dispatch either fails completely or takes a long time to start
dispatch({
type: 'FETCH_ACTIONONE_SUCCESS', //this dispatch fires immediately always
data: response
});
})
.catch(err => {
dispatch({
type: 'FETCH_ACTIONONE_FAIL',
data: err
});
});
最佳答案
如果您在actionone中return
许诺,则可以等待它,然后调用actiontwo:
export const actionOne = (value1, value2): ThunkAction => dispatch =>
return axios.post('/api/route', { // return added here
params: {
然后在调度时:
const results = await dispatch( actionone )
dispatch( actiontwo )