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

React span元素中className前后使用扩展props的差异

React中props扩展与显式属性的顺序差异

核心逻辑很简单:当同一个属性同时通过对象扩展语法({...a})和显式声明出现在组件上时,后面写的属性会覆盖前面的。

咱们拆解两种写法:

第一种写法

var a = { className: 'my-secondary-classname' }; 
<span className="my-span-classname" {...a}>abc</span>

这里先给span显式设置了className="my-span-classname",随后通过{...a}扩展出了className: 'my-secondary-classname'。因为扩展写在后面,所以最终span的className是my-secondary-classname——后面的扩展属性覆盖了前面的显式值。

第二种写法

var a = { className: 'my-secondary-classname' }; 
<span {...a} className="my-span-classname">abc</span>

这次是先通过{...a}扩展出className: 'my-secondary-classname',之后再显式声明className="my-span-classname"。显式声明写在后面,所以最终span的className是my-span-classname——后面的显式值覆盖了前面扩展来的属性。

这个规则适用于所有React组件的props,不只是className。只要是重复的属性,后出现的总会覆盖先出现的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:27:00