在不同的reducer中处理通用API调用

时间:2017-02-15 14:25:17

标签: redux react-router-redux

我有一个名为client的实体和另一个名为person的实体。 client有一个人为它的主要人物,我们还有一个以某种方式与此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,他们将始终更新他们的状态,即使这个动作不适合他们。

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

1 个答案:

答案 0 :(得分:1)

简短回答:是的,你应该有两种不同的行动。让两个不同的reducer侦听相同的动作类型很少是你想做的事情。我很少说,因为可能有一个案例,但我从来没有遇到过。

更长的答案涉及如何在不重复自己的情况下做到这一点。如果您发现您的Reducer和actions正在执行相同的操作而且您已复制了所有代码,则值得设置更高阶的缩减器as explained in the redux documentation