You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用React Hooks不可变地更新对象数组中的指定属性

正确实现代码

直接替换你的onClickHandler为以下写法即可:

const onClickHandler = (id) => {
  setMenuList((prevMenuList) => 
    prevMenuList.map(item => 
      item.id === id 
        ? {...item, amount: item.amount + 1}
        : item
    )
  )
}

实现逻辑说明

  • 采用你要求的函数式更新写法,传入的prevMenuList是更新前的最新状态值,能避免多轮状态更新冲突
  • 用map方法遍历数组,不会修改原有状态数组,符合不可变更新要求
  • 匹配到对应id的餐品条目时,通过展开运算符...item拷贝原有属性,仅修改amount字段后返回新对象,不会直接改动原状态对象
  • 未匹配到的条目直接原样返回,无需额外改动,性能更优

内容的提问来源于stack exchange,提问作者Amine El were

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 12:21:02