我有一个名为client
的实体和另一个名为person
的实体。
client
有一个人为它的主要人物,我们还有一个以某种方式与此client
相关的人员列表。如下所示:
client: {
clientId: 1
personId: 1
people: [{personId: 2}, {personId: 3}]
}
假设我们有一个名为REQUEST_PERSON
的操作,在完成时调度RECEIVE_PERSON
,在react-router-redux
,client/:clientId/
和client/:clientId/people/:personId
内调度需要获取的两个路由人信息..
我有两个减速器,一个用于第一个路径,另一个用于第二个路径。如果我在他们两个中都听RECEIVE_PERSON
,他们将始终更新他们的状态,即使这个动作不适合他们。
我是否应针对每种情况采取两种不同的操作,例如调用相同API路由的REQUEST_CLIENT_PERSON/RECEIVE_CLIENT_PERSON
和REQUEST_PERSON/RECEIVE_PERSON
?我可以以某种方式避免这种重复吗?
答案 0 :(得分:1)
简短回答:是的,你应该有两种不同的行动。让两个不同的reducer侦听相同的动作类型很少是你想做的事情。我很少说,因为可能有一个案例,但我从来没有遇到过。
更长的答案涉及如何在不重复自己的情况下做到这一点。如果您发现您的Reducer和actions正在执行相同的操作而且您已复制了所有代码,则值得设置更高阶的缩减器as explained in the redux documentation。