Reactjs 使用normlizr重新复制:将数据取消移动到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: {
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我没有理解你,上面的代码会给出你想要的输出,只要试一下,就行了。我问的是如何更新一个实体,例如,我更新了一个实体,但我想连同变更一起更新所有实体。请先更新您想要的实体,然后执行浅层合并,这将起作用。更新后的答案,现在检查,如果您只想在事件中更新特定的键,请让我知道,谢谢