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

如何使用扩展运算符/Object.assign动态覆盖对象属性且不修改原状态

如何在不修改原状态的前提下覆盖对象已有属性值
  • 直接使用对象展开语法即可实现,核心逻辑是先拷贝原对象的所有属性,再通过同名属性覆盖原有值,不会修改原状态对象:

    // 原状态对象:this.state.obj = { 2311: 2 }
    const newObj = {
      ...this.state.obj,
      2311: 3 // 直接指定要覆盖的属性和新值
    };
    // 之后更新状态,比如 React 中使用 this.setState({ obj: newObj })
    
  • 如果属性名是动态的(比如存储在变量中),可以结合计算属性名来处理:

    const targetKey = 2311;
    const newValue = 3;
    const newObj = {
      ...this.state.obj,
      [targetKey]: newValue // 用方括号包裹变量作为属性名
    };
    

这个方式和你新增属性的逻辑完全一致,只是把新增的属性名换成了要覆盖的已有属性名而已,不需要依赖lodash等工具就能完成无副作用的状态更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:41:03