Javascript React setstate嵌套对象问题
第二天晚上我无法解决这个问题,我已经绝望了。我有一个嵌套很重的对象,我正在尝试更新它。若我在todaysMenu中有多个元素,并且我试图更新第二个元素的状态,那个么整个数组将存储在todaysMenu的第一个元素中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
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
)
您当前拥有的是使用一个对象创建一个数组,而不是将数组转换为修改后的数组