【问题标题】:Redux with normlizr : unshift data to normlizr object使用 normlizr 的 Redux :将数据转移到 normlizr 对象
【发布时间】:2020-10-05 15:43:24
【问题描述】:

我有一个 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;
      }

【问题讨论】:

    标签: reactjs redux normalization normalizr


    【解决方案1】:

    您可以使用Object.assign 方法或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 我没听懂你,上面的代码会给出你想要的输出,试试一次
    • 是的,它有效。我在询问如何更新实体,例如我更新了其中一个实体,但我想更新所有实体以及更改
    • 是的,先更新你想要的实体,然后执行浅合并,这样就可以了
    • 已更新答案,请立即查看,如果您只想更新事件中的特定键,请告诉我,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    相关资源
    最近更新 更多