Reactjs 使用normlizr重新复制:将数据取消移动到normlizr对象

Reactjs 使用normlizr重新复制:将数据取消移动到normlizr对象,reactjs,redux,normalization,normalizr,Reactjs,Redux,Normalization,Normalizr,我有一个normlizr对象,看起来像: entities: events: 123: {} 125: {} 我有一个标准化的新对象: entities: events: 111: {} 我想把这个事件添加到列表的顶部。 我如何使用redux和immer实现这一点?状态中的结果如下所示: entities: events: 111: {}, 123: {}, 125: {} 我的减速机: case ADD_EVENT: {

我有一个normlizr对象,看起来像:

entities:
  events:
   123: {} 
   125: {}
我有一个标准化的新对象:

entities:
  events:
   111: {}

我想把这个事件添加到列表的顶部。 我如何使用redux和immer实现这一点?状态中的结果如下所示:

entities:
  events:
   111: {},
   123: {},
   125: {}

我的减速机:

    case ADD_EVENT: {
        draft.entities.events = action.payload.entities.events;
        return draft;
      }

您可以使用
Object.assign
method或
es6
spread(…)运算符

case ADD_EVENT: {
  //shallow merge 
  draft.entities.events = Object.assign(
                            {},
                            action.payload.entities.events,
                            draft.entities.events,
                          );

  return draft;
}
更新

如果
action.payload.event
就是这样一个事件

{
  111: {}
}
然后我们可以简单地替换如下内容

case UPDATE_EVENT: {
  draft.entities.events = {...draft.entities.events, ...action.payload.event};
  return draft;
}

@Tuz我没有理解你,上面的代码会给出你想要的输出,只要试一下,就行了。我问的是如何更新一个实体,例如,我更新了一个实体,但我想连同变更一起更新所有实体。请先更新您想要的实体,然后执行浅层合并,这将起作用。更新后的答案,现在检查,如果您只想在事件中更新特定的键,请让我知道,谢谢