Redux + Normalizr分离(删除)操作

Jef*_*f.A 11 redux normalizr

我使用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,而不是真正删除实体,让它们在缓存中,直到用户离开页面!