我无法弄清楚在row.sections[SECTION_ID
行上错过了什么。它总是向我显示错字错误','...
常见问题解答:
sections
-是一个包含objects
的数组。在这种情况下,我 尝试修改定制创建的节的特定对象 标记SECTION_ID。
P.S。
我还尝试将row.sections[SECTION_ID]
放在一个额外的括号[]
中,但不幸的是,这样做无济于事……有什么解决方法吗?
rows: state.rows.map(
row =>
row.ID === action.rowID
? {
...row,
sections: [
...row.sections,
row.sections[SECTION_ID]: { // error is here
...row.sections[SECTION_ID],
data: {
...// some data
}
}
]
}
: row
)
答案 0 :(得分:1)
您无法通过element
操作以这种方式在array
中对某些spread
进行突变。使用这种方法,您将每次都向相同的element
添加一个新的突变的array
。因此,如果您想使其正确,则需要使用map
迭代器:
rows: state.mymaps.rows.map(
row =>
row.ID === action.rowID
? {
...row,
sections: row.sections.map(
(section, index) =>
index === JOIN_SECTION_ID
? {
...section,
data: {
...section.data
}
} : section
)
} : row
)
答案 1 :(得分:0)
如果要在不改变数组的情况下替换数组某个索引处的元素,则可以对数组进行浅表复制,然后在该索引处设置值。例如:
state.rows.map((row) => {
if (rowID !== action.rowID) {
return row;
}
const sectionCopy = [...row.sections];
sectionCopy[SECTION_ID] = {
...row.sections[SECTION_ID],
data: {
// some data
},
};
return {
...row,
sections: sectionCopy,
};
});