Redux - 在行动或减速器中调用一系列功能?

时间:2017-03-20 19:00:38

标签: javascript reactjs redux

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

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
  }
}

或者我可能想将这些调用移到redux reducer并从那里调用每个下一个函数?

{{1}}

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

1 个答案:

答案 0 :(得分:1)

您认为减速器中的调度操作是反模式是正确的。提到的原因非常简洁in this post

来自Redux文档:

  

你应该在减速机内做的事情:

     

改变其论点;

     

执行API调用和路由转换等副作用;

     

(调用非纯函数,例如Date.now()或   的Math.random()。

     

[...]现在,请记住减速器必须   纯。给出相同的参数,它应该计算下一个状态和   把它返还。没有惊喜。无副作用。没有API调用。没有突变。   只是一个计算。

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