这是 react 中的扩展运算符语法。
来自MDN DOCS:
展开语法允许表达式在以下位置展开
多个参数(用于函数调用)或多个元素(用于
数组文字)或多个变量(用于解构赋值)
预计。
在您的情况下,<Person key={x.name} {...x} /> 这意味着将x 包含的整个对象或属性发送给Person Component,因为它看起来像道具一样
例如如果
var x = {
name: "Hello",
last_name: "World"
}
如果你这样做<Person key={x.name} {...x} />
以上将等价于
<Person key={x.name} name={x.name} last_name={x.last_name}/>
展开语法与道具一起使用的顺序也很重要。
考虑将道具传递给组件的情况
var data = {
name: 'abc',
age: '25',
college: 'lmit'
}
如果您使用扩展运算符语法,例如
<Person key={x.name} name='xyz' {...data} />
然后 prop name='xyz' 被从数据解析的键值对覆盖。所以最终的Person 组件调用看起来像
<Person key={x.name} name='abc' age= '25' college= 'lmit' />
但是当你这样写的时候
<Person key={x.name} {...data} name='xyz' />
然后,从数据中解析出来的 prop name='abc' 被显式传递给 Person 的 name='xyz' 覆盖。所以最终的Person 组件调用看起来像
<Person key={x.name} name='xyz' age= '25' college= 'lmit' />