使用传播运算符传递道具
代替
var component = <Component foo={this.props.x} bar={this.props.y} />;
如果需要将每个属性作为单个 prop 值传递,则可以使用 ES6 中支持的扩展运算符 ...
来传递所有值。该组件现在看起来像这样。
var component = <Component {...props} />;
请记住,传入的对象的属性将复制到组件的 props 上。
订单很重要。后来的属性覆盖以前的属性
var props = { foo: 'default' };
var component = <Component {...props} foo={'override'} />;
console.log(component.props.foo); // 'override'
另一种情况是你也可以使用扩展运算符只将部分道具传递给子组件,然后你可以再次使用道具的解构语法。
当儿童组件需要大量道具但不想一个接一个地传递它时,它非常有用。
const { foo, bar, other } = this.props // { foo: 'foo', bar: 'bar', other: 'other' };
var component = <Component {...{foo, bar}} />;
const { foo, bar } = component.props
console.log(foo, bar); // 'foo bar'