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

如何避免修改Nuxt 3组件props传入的原始嵌套对象?

回答

这个方案完全有效,核心原因是它解决了浅拷贝的局限性:

  • 你最初使用的{...props.objParent}属于浅拷贝,仅复制了对象的第一层属性。对于嵌套的title对象,浅拷贝后objChild.title和props.objParent.title仍指向内存中的同一个引用,所以修改子组件的嵌套属性会同步影响父组件的原始数据。
  • JSON.parse(JSON.stringify(props.objParent))是一种通用的深拷贝方式:它先将整个对象(包括所有嵌套层级)序列化为JSON字符串,再重新解析为全新的对象。这样objChild的所有嵌套属性都会拥有独立的内存地址,修改子组件的objChild时,父组件的原始数据不会再被波及。

需要注意该方案的适用边界:

  • 无法拷贝函数、Symbol类型、存在循环引用的对象
  • 会丢失对象的原型链
  • Date类型会被转换为字符串,而非保留原始Date实例

如果你的objParent不包含上述特殊类型的数据,这个方案可以放心使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:56:08