处理不同减速器中的通用 API 调用

Handle generic API call in different reducers

我有一个名为 client 的实体和另一个名为 person 的实体。 client 有一个主要人物的 personId,我们还有一个以某种方式与此 client 相关的人员列表。类似于以下内容:

client: {
  clientId: 1
  personId: 1
  people: [{personId: 2}, {personId: 3}]
}

假设我们有一个名为 REQUEST_PERSON 的动作,它在完成时调度 RECEIVE_PERSON,并且 react-router-reduxclient/:clientId/client/:clientId/people/:personId 中的两条路由需要获取人员信息..

我有两个减速器,一个用于第一条路线,另一个用于第二条路线。如果我在他们两个中都听 RECEIVE_PERSON,他们将始终更新他们的状态,即使该操作不是为他们准备的。

我是否应该针对每种情况执行两种不同的操作,例如 REQUEST_CLIENT_PERSON/RECEIVE_CLIENT_PERSONREQUEST_PERSON/RECEIVE_PERSON 将调用相同的 API 路由?我能以某种方式避免这种重复吗?

简短回答:是的,您应该有两个不同的操作。让两个不同的 reducer 监听相同的 action 类型并不是你想要做的事情。我说很少是因为可能会有这种情况,但我从来没有 运行 成这样。

较长的答案涉及如何在不重复自己的情况下做到这一点。如果您发现您的 reducer 和 action 正在做同样的事情并且您已经复制了所有代码,那么值得设置一个更高阶的 reducer as explained in the redux documentation.