我使用带有 normalizr 的 redux 来规范来自服务器的响应,基本上遵循真实世界的示例。这种方式entities
reducer很简单,只需要合并响应即可。我现在遇到的问题是一种delete
操作。我发现了 normalizr repo 的这个 issue#21,但仍然不知道如何解决这个问题。例如,
当前状态是
{
entities:
product_categories: {
...
13: {
...
products: ["1", "2"], <--------------- [i] Current state
...
}
},
products: {
1: {
id: "1"
}
}
}
标准化响应是
{
...
product_categories: {
...
13: {
...
products: ["1"], <---------------- [2] Normalized result
}
...
}
如您所见,后端 api 仅返回属于该类别的所有产品 id,在这种情况下,“2”是分离的。当 'entities' reducer 合并这个响应时,“2”仍然存在。现在我只是重新加载页面,但我想知道是否有更好的方法来处理这种情况?
在entities
reducer 中,我只是像在现实世界的例子中一样合并它。
return merge({}, state, action.payload.entities);