我想从另一个动作发出动作但不能这样做。当我尝试这样做时,它无法找到getAllUser
方法。
下面是我的动作类。
export const myActions = {
getAllUser() {
return (dispatch) => {
makeApiCall()
.then((response) => {
dispatch({
type: USER_SUCCESS,
payload: response,
});
})
.catch((error) => {
dispatch({
type: USER_FAILURE,
payload: error,
});
});
};
},
addUser(user) {
return (dispatch) => {
makeApiCall(user)
.then((response) => {
/*
Need help here :
wants to call above getAllUser()
.then(() =>
dispatch({
type: ADD_SUCCESS,
payload: response,
});
)
*/
};
},
};
我尝试了各种方法,例如
myActions.getAllUser()
.then((response) =>
dispatch({
type: ADD_SUCCESS,
payload: response,
});
);
并尝试直接发送,
const self = this;
dispatch(self.getAllUser());
dispatch({
type: ADD_SUCCESS,
payload: response,
});
另一种解决方法是在addUser
成功之后,更新reducer,然后再从UI调用getAccount
再次刷新结果,但只是想知道如何使用多个调度实现此目的
答案 0 :(得分:1)
您可以单独导出这些函数,而不是将它包装在同一个对象下:
export const getAllUser = () => dispatch => { ... }
export const addUser = () => dispatch => {
...
dispatch(getAllUser());
}
如果需要,您仍然可以全部导入它们:
import * as myActions from '...';
或者您可以先声明getAllUser
然后添加到myActions
,但上述解决方案更清晰。
const getAllUser = ...
const myActions = {
getAllUser,
addUser = ... { dispatch(getAllUser()) }
}