为了账号安全,请及时绑定邮箱和手机立即绑定

反应 setstate 嵌套对象问题

反应 setstate 嵌套对象问题

繁华开满天机 2022-10-08 15:01:36
我无法解决这个 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)        }));    }如果我删除方括号,它只是存储为对象。
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

你会想要改变:


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

)

您目前拥有的是使用一个对象创建一个数组,而不是将数组转换为修改后的数组。


查看完整回答
反对 回复 2022-10-08
  • 1 回答
  • 0 关注
  • 49 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信