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

React中如何仅更新对象状态的单个属性而保留其他属性?

解决React对象State部分属性更新问题

你当前的问题是:调用setTeam1时传入了仅包含fga的新对象,React会用这个新对象完全替换原有的team1状态,导致其他未指定的属性被重置为初始值。

要实现仅更新指定属性、保留其余属性的效果,核心是保留原有对象的所有属性,再覆盖需要修改的属性,可以通过ES6对象展开运算符(...)实现:

修改后的按钮代码

<button
  id="miss"
  onClick={() =>
    setTeam1({
      ...team1, // 展开原有对象的全部属性,保留当前值
      fga: team1.fga + 1 // 仅更新fga属性
    })
  }
>
  Miss
</button>

更稳妥的函数式更新(推荐场景:频繁触发更新)

如果你的更新逻辑依赖前一次的状态,建议用函数式更新的方式,避免因State异步更新导致的快照偏差:

<button
  id="miss"
  onClick={() =>
    setTeam1(prevTeam1 => ({
      ...prevTeam1,
      fga: prevTeam1.fga + 1
    }))
  }
>
  Miss
</button>

这种方式会接收前一次的状态prevTeam1作为参数,确保你始终基于最新的状态进行更新,在连续点击按钮这类场景下更可靠。

内容的提问来源于stack exchange,提问作者alecnazzy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:27:05