猿问

反应 setstate 嵌套对象问题

我无法解决这个 setState 第二天晚上,我已经绝望了。我有大量嵌套的对象,我正在尝试更新。如果我在 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)

        }));

    }

如果我删除方括号,它只是存储为对象。

http://img3.mukewang.com/634120720001d1e003760317.jpg

繁华开满天机
浏览 72回答 1
1回答

千巷猫影

你会想要改变: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)您目前拥有的是使用一个对象创建一个数组,而不是将数组转换为修改后的数组。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答