Reactjs 如何使用扩展运算符复制嵌套对象特性
我有一个对象数组,每个对象都有这些值Reactjs 如何使用扩展运算符复制嵌套对象特性,reactjs,Reactjs,我有一个对象数组,每个对象都有这些值 id: "53ed5e27-23a5-4a06-b53f-d0113d607fb5" measure: units: Array(2) 0: {perPortion: 15, name: "tbsp"} 1: {perPortion: 1, name: "ml"} 我在数组上循环,并将单击功能传递给按钮 function handleClick(index: number, ingredient
id: "53ed5e27-23a5-4a06-b53f-d0113d607fb5"
measure:
units: Array(2)
0: {perPortion: 15, name: "tbsp"}
1: {perPortion: 1, name: "ml"}
我在数组上循环,并将单击功能传递给按钮
function handleClick(index: number, ingredient: Data) {
//copy original array
const newListArr = [...props.data];
newListArr[index] = {
...newListArr[index],
}
}
函数正在获取所单击对象的索引。我复制循环数组,然后尝试使用spread操作符引入所有属性
我的问题是我不知道如何对嵌套对象使用spread操作符
我只想获取单位数组中“perparty”键的target值,而不影响其他任何内容。
我该怎么做
提前感谢您的帮助
我只想得到
单位阵列不影响其他任何东西
可以复制整个嵌套对象,然后覆盖特定键的值。您需要浅层复制所有正在更新的嵌套特性
function handleClick(index: number, ingredient: Data) {
const newItem = {
// shallow copy data
...props.data,
measure: {
// shallow copy measure object
...props.data.measure,
// copy units array
units: props.data.measure.units.map((unit, i) =>
i === index
? {
// shallow copy specific unit at matched index
...unit,
perPortion: // new per portion value
}
: unit
)
}
};
.... // return or use newItem
}
感谢您的评论@Drew,我这样做了,但是每个部分的键只是被添加到整个对象中,而不是被覆盖。理想情况下,我希望只针对第一个对象单元内的“每个部分”键[0]。perPortion@Whyudodis这意味着以前数组对象中不存在
perparty
属性,被覆盖。您能否分享一个实际数据的示例,以及您试图更新的perparty
属性的具体内容?perparty仅存在于作为数组的“units”中,“units”存在于作为对象的“measure”中。非常感谢您的支持time@Whyudodis别担心。你能分享外部物体是什么吗?它只是一个对象还是数组的一部分?处理程序中的索引
是否是要更新的嵌套单元
数组的索引?