在调用super()
方法之前,子类构造函数不能使用this
引用。这同样适用于ES6子类。将props
参数传递给super()
的主要原因是为了在子构造函数中访问this.props
。
带 props 参数:
class MyComponent extends React.Component {
constructor(props) {
super(props)
console.log(this.props) // prints { name: 'John', age: 42 }
}
}
不带 props 参数:
class MyComponent extends React.Component {
constructor(props) {
super()
console.log(this.props) // prints undefined
// but props parameter is still available
console.log(props) // prints { name: 'John', age: 42 }
}
render() {
// no difference outside constructor
console.log(this.props) // prints { name: 'John', age: 42 }
}
}
上面的代码片段显示this.props
仅在构造函数中有所不同。它在构造函数之外是相同的。