在React构造函数中调用super()有什么作用?

从文档中学习React

并遇到以下示例:

class Square extends React.Component {

constructor() {

super();

this.state = {

value: null,

};

}

...

}

根据Mozilla的说法,super允许您this在构造函数中使用。是否有其他原因可以单独使用super(我知道super也可以访问父类的方法),但是使用React时,是否还有其他仅super()通过自身调用的用例?

回答:

super()仅在具有构造函数的React组件内部被调用。例如,以下代码不需要超级:

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()

}

}

之所以this不能被允许之前的原因super()是因为thissuper()调用if未初始化。但是,即使不使用,this我们也需要super()内部构造函数,因为ES6

class constructors MUST call super if they are

subclasses。因此,super()只要有构造函数,就必须调用。(但是子类不必具有构造函数)。

super(props)如果必须使用this.props,我们可以在构造函数内部调用,例如:

class App extends React.component{

constructor(props){

super(props);

console.log(this.props); // prints out whatever is inside props

}

}

我希望我能说清楚。

以上是 在React构造函数中调用super()有什么作用? 的全部内容, 来源链接: utcz.com/qa/430025.html

回到顶部