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

React中更新组件state时的扩展运算符(...)有何作用?

React状态更新中扩展运算符(...)的作用

我是React初学者,正在学习展示REST API返回对象的教程。在handleChangeTitle方法中,我获取输入框中的值,并通过新的activeItem更新组件状态,代码如下:

handleChangeTitle(e){
    //ogni volta che cambia qualcosa nella casella di testo, viene chiamata questa funzione
    var name = e.target.name
    var value = e.target.value 
    console.log('Name:', name)
    console.log('Value:', value)
    this.setState({
      activeItem:{
        ...this.state.activeItem,
        title:value
      }
    })
  }

请问在引用this.state.activeItem前的扩展运算符(...)有什么作用?

这个扩展运算符(...)在这里的核心作用就是浅拷贝原activeItem对象的所有属性,再在新对象里覆盖title属性,最终得到一个更新后的新对象用来更新状态。

具体来说:

  • React要求状态不可直接修改,必须通过setState传入新对象触发更新。如果直接修改this.state.activeItem.title,React检测不到状态变化,不会重新渲染组件。
  • 如果不用扩展运算符,直接写activeItem: {title: value},新的activeItem就只剩title这一个属性,原对象里的其他属性(比如id、completed这类)都会丢失。
  • 用...this.state.activeItem会把原对象的所有属性复制到新对象中,后面的title: value会覆盖原对象的title值,这样既保留了其他属性,又更新了需要修改的title,完全符合React状态更新的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:27:24