【问题标题】:Change object key property in reducer更改减速器中的对象键属性
【发布时间】:2019-04-15 20:49:20
【问题描述】:

我有两个来自服务器的值 - 旧值和新值。在我的 redux 存储中,我需要将对象键从旧值更改为新值(编辑键值),并将旧对象键中的项目数组附加到替换的新对象键。最好的方法是什么?

我试过这样做:

const handleEditFilter = (state, { payload }) => {
  const { newValue, oldValue } = payload;
  return {
    ...state,
    regions: {
      ...state.regions,
      list: {
        ...state.regions.list,
        [newValue]: [...state.regions.list[oldValue]],
      },
    },
  };
};

但这只是用旧数组中的数组项创建一个新对象。如何实际替换对象的键名并从旧键附加项目?

【问题讨论】:

    标签: reactjs react-redux


    【解决方案1】:

    首先,复制内部列表:

    const list = { ...state.regions.list };
    

    然后替换值:

    list[newValue] = list[oldValue];
    delete list[oldValue];
    

    然后更新状态:

    return {
      ...state,
      regions: {
         ...state.regions,
         list
      }
    };
    

    要对嵌套对象执行不可变操作,我更喜欢使用库,例如icepick,这将使操作更具可读性(getInunsetInsetIn 的链)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多