我使用redux和normalizr来规范化服务器的响应,基本上遵循现实世界的例子.这种方式entitiesreducer非常简单,只需合并响应即可.我现在遇到的问题是一种delete操作.我发现这个问题#21 of normalizr repo但仍然无法弄清楚如何解决这个问题.例如,
目前的状态是
{
entities:
product_categories: {
...
13: {
...
products: ["1", "2"], <--------------- [i] Current state
...
}
},
products: {
1: {
id: "1"
}
}
}
Run Code Online (Sandbox Code Playgroud)
标准化的响应是
{
...
product_categories: {
...
13: {
...
products: ["1"], <---------------- [2] Normalized result
}
...
}
Run Code Online (Sandbox Code Playgroud)
如您所见,后端api只返回属于此类别的所有产品ID,在这种情况下,"2"将被分离.当'entities'reducer合并这个响应时,"2"仍然存在.现在我只是重新加载页面,但我想知道是否有更好的方法来处理这种情况?
在entitiesreducer中,我只是像现实世界中的例子一样合并它.
return merge({}, state, action.payload.entities);
Dan*_*mov 11
只是不要担心它在那里.将您的状态视为数据库.您不会真正从数据库中删除记录,以避免复杂的级联 - 通常您只需更改其在数据库中的状态.类似地,使用Normalizer,而不是真正删除实体,让它们在缓存中,直到用户离开页面!
| 归档时间: |
|
| 查看次数: |
1993 次 |
| 最近记录: |