首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Redux -调用一个功能链的动作还是减速器?

Redux -调用一个功能链的动作还是减速器?
EN

Stack Overflow用户
提问于 2017-03-20 19:00:38
回答 1查看 7.6K关注 0票数 1

我有一个合乎逻辑的问题,是否应该对操作中的每个回调进行多个函数调用:

代码语言:javascript
运行
复制
export const myAction= () => (distaptch, getState) => {
    callFunctionA(function(e){
        if(e){
            dispatch(eventA(e));

            callFunctionB(function(e){

                dispatch(eventB(e));

                callFunctionC(function(e){

                    dispatch(eventC(e));
                });
            });
        }
    });
}

或者我可能想把这些调用移到redux还原器中,然后从那里调用下一个函数?

代码语言:javascript
运行
复制
const reducer = (state={}, action) => {
  switch (action.type) {
    case 'EVENT_A':

      callFunctionB(action.e);

      return state;
    case 'EVENT_B':

        callFunctionC(action.e);
        return state;   
    default:
      return state
  }
}

第二种方法看上去就像反模式导致了意大利面代码.也许我错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-20 19:29:56

您正确地假设减速机中的调度操作是反模式的。在这个岗位上非常简洁地提到了原因。

来自Redux文档:

在减速机里你永远不应该做的事情: 改变其论点; 执行诸如API调用和路由转换之类的副作用; (调用非纯函数,例如Date.now()或Math.random() )。 ..。现在,请记住减速机必须是纯的。给定相同的参数,它应该计算下一个状态并返回它。没有惊喜。没有副作用。没有API调用。没有突变。只是计算一下。

您可以查看Redux Saga来处理异步流,以避免在第一个示例中显示的操作的回调地狱。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42911875

复制
相关文章

相似问题

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