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,
}));
}));
我有以下带有嵌套对象的对象数组:
[
{
"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,
}));
}));