处理不同减速器中的通用 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-redux
、client/:clientId/
和 client/:clientId/people/:personId
中的两条路由需要获取人员信息..
我有两个减速器,一个用于第一条路线,另一个用于第二条路线。如果我在他们两个中都听 RECEIVE_PERSON
,他们将始终更新他们的状态,即使该操作不是为他们准备的。
我是否应该针对每种情况执行两种不同的操作,例如 REQUEST_CLIENT_PERSON/RECEIVE_CLIENT_PERSON
和 REQUEST_PERSON/RECEIVE_PERSON
将调用相同的 API 路由?我能以某种方式避免这种重复吗?
简短回答:是的,您应该有两个不同的操作。让两个不同的 reducer 监听相同的 action 类型并不是你想要做的事情。我说很少是因为可能会有这种情况,但我从来没有 运行 成这样。
较长的答案涉及如何在不重复自己的情况下做到这一点。如果您发现您的 reducer 和 action 正在做同样的事情并且您已经复制了所有代码,那么值得设置一个更高阶的 reducer as explained in the redux documentation.
我有一个名为 client
的实体和另一个名为 person
的实体。
client
有一个主要人物的 personId,我们还有一个以某种方式与此 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
,他们将始终更新他们的状态,即使该操作不是为他们准备的。
我是否应该针对每种情况执行两种不同的操作,例如 REQUEST_CLIENT_PERSON/RECEIVE_CLIENT_PERSON
和 REQUEST_PERSON/RECEIVE_PERSON
将调用相同的 API 路由?我能以某种方式避免这种重复吗?
简短回答:是的,您应该有两个不同的操作。让两个不同的 reducer 监听相同的 action 类型并不是你想要做的事情。我说很少是因为可能会有这种情况,但我从来没有 运行 成这样。
较长的答案涉及如何在不重复自己的情况下做到这一点。如果您发现您的 reducer 和 action 正在做同样的事情并且您已经复制了所有代码,那么值得设置一个更高阶的 reducer as explained in the redux documentation.