Redux:减少 - 如何避免在嵌套数组递归期间出现对象不可扩展错误?

Redux: Reduced - How to avoid object is not extensible error during the recursion on nested array?

我有以下带有嵌套对象的对象数组:

[
      {
        "name": "ONE",
        "properties": [
          {
             "name": "XXX"
          },
          {
             "name": "YY"
          }
        ]
      },
      {
        "name": "TWO",
        "properties": []
      }
    ]

并且我正在尝试使用 Reducer 函数中的 map 递归地将属性添加到每个对象。我在哪里遇到以下异常:

TypeError: 无法添加 属性 isChecked,对象不可扩展

projectData.myArr.map((item, index) => {
  item.isChecked = false;
  item.properties.map((value, index1) => {
    value.isChecked = false;
  })
});

我尝试使用 Object.assign() ,因为它在这里讨论过:

let newData = data.map((item) => 
    Object.assign({}, item, {selected:false})
)

但这种方式允许我只为顶级对象添加属性,而不能为内部对象添加属性。

如何解决与 Redux 模式相关的嵌套对象?

使用嵌套 spread syntax 在所需突变的每个级别创建新对象:

projectData.myArr.map((item, itemIndex) => ({
  ...item,
  isChecked: false,
  properties: item.properties.map((value, valueIndex) => ({
    ...value,
    isChecked: false,
  }));
}));