Redux: Reduced - 如何在嵌套数组的递归过程中避免对象不可扩展错误?
Posted
技术标签:
【中文标题】Redux: Reduced - 如何在嵌套数组的递归过程中避免对象不可扩展错误?【英文标题】:Redux: Reduced - How to avoid object is not extensible error during the recursion on nested array? 【发布时间】:2022-01-14 12:06:07 【问题描述】:我有以下带有嵌套对象的对象数组:
[
"name": "ONE",
"properties": [
"name": "XXX"
,
"name": "YY"
]
,
"name": "TWO",
"properties": []
]
我正在尝试使用Reducer Function 中的map 递归地将属性添加到每个对象。我在哪里得到以下异常:
TypeError:无法添加属性 isChecked,对象不可扩展
projectData.myArr.map((item, index) =>
item.isChecked = false;
item.properties.map((value, index1) =>
value.isChecked = false;
)
);
我尝试使用这里讨论过的 Object.assign():Object is not extensible error when creating new attribute for array of objects
let newData = data.map((item) =>
Object.assign(, item, selected:false)
)
但是这种方式允许我只为***对象而不是内部对象添加属性。
我如何解决与 Redux 模式相关的嵌套对象?
【问题讨论】:
什么是“projectData.myArr”? myArr 是否包含数组? 【参考方案1】:使用嵌套的spread syntax 在所需突变的每个级别创建新对象:
projectData.myArr.map((item, itemIndex) => (
...item,
isChecked: false,
properties: item.properties.map((value, valueIndex) => (
...value,
isChecked: false,
));
));
【讨论】:
以上是关于Redux: Reduced - 如何在嵌套数组的递归过程中避免对象不可扩展错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ReactJs Redux 中删除/设置状态数组的“null”嵌套属性?