首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复现动作中的多重调度

复现动作中的多重调度
EN

Stack Overflow用户
提问于 2018-05-28 12:29:27
回答 1查看 170关注 0票数 0

我想从另一个动作中发出一个动作,但无法这样做。当我尝试这样做时,它无法找到getAllUser方法。下面是我的动作课。

代码语言:javascript
复制
    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,
                              });
                            )
                        */
            };
        },
    };

我尝试过各种各样的方法,

代码语言:javascript
复制
myActions.getAllUser()
    .then((response) => 
       dispatch({
           type: ADD_SUCCESS,
           payload: response,
       });
    );

试着直接派遣,

代码语言:javascript
复制
        const self = this;
        dispatch(self.getAllUser());
        dispatch({
            type: ADD_SUCCESS,
            payload: response,
        });

还有一种方法是在addUser成功之后,更新还原器,而不是再次从UI调用getAccount来刷新结果,但我很想知道如何使用多个分派来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-28 12:32:26

您可以单独导出函数,而不是将其封装在同一个对象下:

代码语言:javascript
复制
export const getAllUser = () => dispatch => { ... }

export const addUser = () => dispatch => { 
  ... 
  dispatch(getAllUser());
}

如果需要,还可以全部导入:

代码语言:javascript
复制
import * as myActions from '...';

或者您可以先声明getAllUser,然后添加到myActions中,但是上面的解决方案要干净得多。

代码语言:javascript
复制
const getAllUser = ...
const myActions = {
  getAllUser,
  addUser = ... { dispatch(getAllUser()) }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50566501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档