的含义是什么?
{...this.props}
我试图像那样使用它
<div {...this.props}> Content Here </div>
答案 0 :(得分:155)
它被称为spread attributes,其目的是使道具的传递更容易。
让我们假设您有一个接受N个属性的组件。如果数量增加,将这些传递下去可能会很乏味且难以处理。
<Component x={} y={} z={} />
因此,你这样做,将它们包装在一个对象中并使用扩散符号
var props = { x: 1, y: 1, z:1 };
<Component {...props} />
会将其解压缩到您组件的道具中,即,只有当您将道具传递给另一个组件时,才“永远”在{... props}
函数中使用render()
。正常this.props.x
使用解压缩的道具。
答案 1 :(得分:12)
它是ES6 Spread_operator
和Destructuring_assignment
。
<div {...this.props}>
Content Here
</div>
它等于类组件:
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
);
功能组件
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
);
有关详细信息,请参阅以下链接:
答案 2 :(得分:1)
这是ES-6功能。这意味着你提取道具的所有属性
div.{... }
运算符用于提取对象的属性。
答案 3 :(得分:0)
它将编译为:
React.createElement('div', this.props, 'Content Here');
如上所示,它将所有道具传递给div
。
答案 4 :(得分:0)
您将在子组件中使用道具
例如
如果您现在的道具是
{
booking: 4,
isDisable: false
}
您可以在孩子的电脑中使用此道具
<div {...this.props}> ... </div>
在您的子组件中,您将收到所有父项道具。