这样做是否有效:

export const nextUser = () => {
  // calculation here
  return {
    type: 'UPDATE_USER',
    payload: userObject
  };
};

export const prevUser = () => {
  // calculation here
  return {
    type: 'UPDATE_USER',
    payload: userObject
  };
};


在这里,我有两个动作创建者,它们的操作非常相似。两者都更新了一个用户对象,但是一个正在前进,而另一个则向后。让他们两个都发出相同的动作是否有效?最后,reducer将收到一个用户对象并进行更新,因此它不必知道我们要转到下一个还是上一个User。还是因为我的动作创建者的名字与我的减速器不同而被认为是不干净的?

最佳答案

技术上没有问题,但是...


  在这里,我有两个动作创建者,它们的操作非常相似


不相似,但确切的操作。


  两者都更新一个用户对象


这些只是动作创建者,他们代表action他们并没有真正“做”任何事情。
计算下一个状态的单位是(并且应该是)reducer,并且如果减速器不关心其prevUsernextUser,那么我看不出有2个相同的原因名称不同的动作(相同的typepayload)。

编辑

我只是注意到代码中的// calculation here注释,如果这意味着您在做一些副作用,那么计算下一个状态的位置实际上是在动作创建者/中间件内部(归约器应该是纯净的)。

10-05 23:24