ReactJS代码中这(...)三个点是做什么的?

Number of views 56

我原本做服务端的,没成想前端被干掉了,都让我们后端的接手前端了,看到前端一奇怪的代码,想问下做啥用的?

<Modal {...this.props} title='Modal heading' animation={false}>
1 Answers

在你提供的ReactJS代码片段中,{...this.props} 使用了JavaScript的扩展运算符(spread operator)。这个符号用于将一个对象的所有可枚举属性解构出来,并将其作为一个个独立的参数传递给组件。

具体来说,在你的例子中,{...this.props} 会将当前组件的所有属性(props)解构并传递给 <Modal> 组件。这样做有以下几个好处:

  1. 简化属性传递:如果你需要将父组件传递给当前组件的所有属性再传递给子组件,使用扩展运算符可以避免手动列举每个属性。
  2. 保持灵活性:如果将来父组件增加或修改了传递给当前组件的属性,不需要修改当前组件的代码来适应这些变化。

假设你的组件接收了一些属性(例如 foo, bar, baz),并且你希望将这些属性全部传递给 <Modal> 组件,你可以这样写:

<Modal {...this.props} title='Modal heading' animation={false}>

这等价于:

<Modal foo={this.props.foo} bar={this.props.bar} baz={this.props.baz} title='Modal heading' animation={false}>

不过,使用扩展运算符的方式更简洁且易于维护。