Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React setstate嵌套对象问题_Javascript_Arrays_Object_Nested_Setstate - Fatal编程技术网

Javascript React setstate嵌套对象问题

Javascript React setstate嵌套对象问题,javascript,arrays,object,nested,setstate,Javascript,Arrays,Object,Nested,Setstate,第二天晚上我无法解决这个问题,我已经绝望了。我有一个嵌套很重的对象,我正在尝试更新它。若我在todaysMenu中有多个元素,并且我试图更新第二个元素的状态,那个么整个数组将存储在todaysMenu的第一个元素中 onChangeAnyValue(values, itemIndex) { const key = Object.keys(values.x)[0]; const provideDate = values.date; this.setS

第二天晚上我无法解决这个问题,我已经绝望了。我有一个嵌套很重的对象,我正在尝试更新它。若我在todaysMenu中有多个元素,并且我试图更新第二个元素的状态,那个么整个数组将存储在todaysMenu的第一个元素中

onChangeAnyValue(values, itemIndex) {
        const key = Object.keys(values.x)[0];
        const provideDate = values.date;
        this.setState(prevState => ({
            data: prevState.data.map(day => day.date === provideDate ? {
                ...day,
                todaysMenu: [{
                    ...day.todaysMenu,
                    [itemIndex]: {
                        ...day.todaysMenu[itemIndex],
                        dish: {
                            ...day.todaysMenu[itemIndex].dish,
                            [key]: values.x[key]
                        }
                    }
                }]
            } : day)
        }));
    }
在我删除方括号的情况下,它只存储为对象

谢谢你抽出时间

您需要更改:

todaysMenu: [{
  ...day.todaysMenu,
  [itemIndex]: {
    ...day.todaysMenu[itemIndex],
    dish: {
      ...day.todaysMenu[itemIndex].dish,
      [key]: values.x[key]
    }
  }
}]
…致:

todaysMenu: day.todaysMenu.map((item, index) => 
  index === itemIndex
    ? { ...item, dish: { ...item.dish, [key]: values.x[key] } }
    : item
)
您当前拥有的是使用一个对象创建一个数组,而不是将数组转换为修改后的数组