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别担心。你能分享外部物体是什么吗?它只是一个对象还是数组的一部分?处理程序中的
索引
是否是要更新的嵌套
单元
数组的索引?