这是什么意思
{...this.props}
我正在尝试这样使用它
<div {...this.props}> Content Here </div>
它被称为 传播属性,其目的是使道具的传递更容易。
让我们假设您有一个接受 N 个属性的组件。如果数量增加,传递这些信息可能是乏味和笨重的。
<Component x={} y={} z={} />
因此,您可以这样做,将它们包装在一个对象中,并使用扩展符号
var props = { x: 1, y: 1, z:1 }; <Component {...props} />
它将把它解压到组件上的道具中,也就是说,只有当你将道具传递给另一个组件时,你“永远”不会在 render()函数中使用 {... props}。使用你的未包装道具作为正常的 this.props.x。
render()
{... props}
this.props.x
这是 ES-6的功能。这意味着你提取的所有属性的道具 div.{... }
div.{... }
运算符用于提取对象的属性。
是 ES6Spread_operator和 Destructuring_assignment。
Spread_operator
Destructuring_assignment
等于 Class Component
Class Component
const person = { name: "xgqfrms", age: 23, country: "China" }; class TestDemo extends React.Component { render() { const {name, age, country} = {...this.props}; // const {name, age, country} = this.props; return ( <div> <h3> Person Information: </h3> <ul> <li>name={name}</li> <li>age={age}</li> <li>country={country}</li> </ul> </div> ); } } ReactDOM.render( <TestDemo {...person}/> , mountNode );
或 Function component
Function component
const props = { name: "xgqfrms", age: 23, country: "China" }; const Test = (props) => { return( <div name={props.name} age={props.age} country={props.country}> Content Here <ul> <li>name={props.name}</li> <li>age={props.age}</li> <li>country={props.country}</li> </ul> </div> ); }; ReactDOM.render( <div> <Test {...props}/> <hr/> <Test name={props.name} age={props.age} country={props.country} /> </div> , mountNode );
Https://babeljs.io/docs/plugins/transform-object-rest-spread/
Https://facebook.github.io/react/docs/components-and-props.html
它将汇编成这样:
React.createElement('div', this.props, 'Content Here');
正如你可以看到上面,它通过它的所有道具的 div。
div
您将在子组件中使用道具
比如说
如果你现在的组件道具是
{ booking: 4, isDisable: false }
你可以把这个道具用在你的儿童漫画里
<div {...this.props}> ... </div>
在您的子组件中,您将收到您的所有父道具。
我们可以在 nextJS 中传递道具,例如:
<Component {...{ props, allCount: count?.lenght, }} />
Props 是包含我们传递给父组件的 Attritribute 的对象