Reactjs React中用于传播道具的三点语法是否与JavaScript表达式上下文中的传播运算符分开?

Reactjs React中用于传播道具的三点语法是否与JavaScript表达式上下文中的传播运算符分开?,reactjs,jsx,Reactjs,Jsx,我熟悉JavaScript扩展语法: obj1 = {x: 1, y: 2, z: 3 } obj2 = {...obj1} console.log(JSON.stringify(obj1) == JSON.stringify(obj2)) // true props = {x: 1, y: 2, z: 3} <SomeComponent {...props} /> 在React的JSX语法中,我经常看到类似于spread语法的内容: obj1 = {x: 1, y: 2, z:

我熟悉JavaScript扩展语法:

obj1 = {x: 1, y: 2, z: 3 }
obj2 = {...obj1}
console.log(JSON.stringify(obj1) == JSON.stringify(obj2)) // true
props = {x: 1, y: 2, z: 3}
<SomeComponent {...props} />
在React的JSX语法中,我经常看到类似于spread语法的内容:

obj1 = {x: 1, y: 2, z: 3 }
obj2 = {...obj1}
console.log(JSON.stringify(obj1) == JSON.stringify(obj2)) // true
props = {x: 1, y: 2, z: 3}
<SomeComponent {...props} />
这基本上就是钻井的支柱。然而,我也知道JSX允许在花括号中指定JavaScript表达式。但是,很明显,不作为财产规格?这样看来,道具钻孔的机制(即在JSX元素定义中指定花括号-
vs
)虽然看起来像是常规的排列操作,但实际上不是


写下这段话,我更确信这是事实。。。但如果我错了,我希望得到反馈

您的直觉是正确的:即使语法相同,“扩展属性”语法也是JSX特性,正如Sebastian Markbåge(React核心团队)在这里定义的那样


对词汇表的观察:“钻取”道具通常是一个负面术语,意思是通过过多的组件传递道具,通常是一种代码气味。一个更中性的术语是“传递”道具。

你的直觉是正确的:即使语法相同,“扩展属性”语法也是JSX特性,正如Sebastian Markbåge(React核心团队)在这里定义的那样


对词汇表的观察:“钻取”道具通常是一个负面术语,意思是通过过多的组件传递道具,通常是一种代码气味。更中性的术语是“传递”道具。

是的,你是对的。但是,您不应该盲目地使用spread语法将整个道具集从父组件传递到子组件,因为这将导致以下警告:

Warning: Invalid value for prop `someProp` on <some> tag

是的,你说得对。但是,您不应该盲目地使用spread语法将整个道具集从父组件传递到子组件,因为这将导致以下警告:

Warning: Invalid value for prop `someProp` on <some> tag