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

如何传递对象作为组件Props并仅修改单个属性值?

解决方案

你的写法存在两个问题:一是直接修改了原author对象的age值,二是传递给data的不是完整对象,而是赋值操作返回的24这个数值,完全不符合需求。

下面是几种正确的实现方式:

方法一:对象展开运算符(推荐)

这种方式不会修改原对象,而是生成一个包含修改后属性的新对象,是前端框架中处理props的常用方式:

<NextPage data={{ ...author, age: 24 }} />

原理:...author会展开原对象的所有属性,后面的age: 24会覆盖原对象中的age属性,最终生成一个新的完整对象,原author对象保持不变。

方法二:修改原对象后传递(不推荐)

如果你确定不需要保留原对象的age值,可以先修改原对象,再传递整个对象:

author.age = 24;
<NextPage data={author} />

注意:这种方式会直接改变原author的age属性,可能导致其他使用该对象的地方数据异常,除非你明确需要这种副作用,否则不建议使用。

方法三:使用Object.assign

和展开运算符效果类似,通过Object.assign生成新对象:

<NextPage data={Object.assign({}, author, { age: 24 })} />

原理:先创建一个空对象,接着把author的所有属性复制到空对象中,最后用{ age: 24 }覆盖对应的属性,得到最终的新对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:25:37