只有当react组件具有构造函数时,才会在其内部调用super()
.例如,下面的代码不需要super:
class App extends React.component {
render(){
return <div>Hello { this.props.world }</div>;
}
}
然而,如果我们有一个构造函数,那么super()
是强制性的:
class App extends React.component {
constructor(){
console.log(this) //Error: 'this' is not allowed before super()
}
}
在super()
之前不能允许this
的原因是,如果不调用super()
,则this
未初始化.然而,即使我们不使用this
,我们也需要在构造函数中使用super()
,因为ES6 class constructors MUST call super if they are subclasses
.因此,只要有构造函数,就必须调用super()
.(但子类不必有构造函数.)
如果必须使用this.props
,我们在构造函数中调用super(props)
,例如:
class App extends React.component{
constructor(props){
super(props);
console.log(this.props); // prints out whatever is inside props
}
}
我希望我能说清楚.