super()
est appelée à l'intérieur d'une réagir composant uniquement si elle a un constructeur. Par exemple, le code ci-dessous ne nécessite pas super:
class App extends React.component {
render(){
return <div>Hello { this.props.world }</div>;
}
}
Cependant, si on a un constructeur alors super()
est obligatoire:
class App extends React.component {
constructor(){
console.log(this) //Error: 'this' is not allowed before super()
}
}
La raison pourquoi this
ne peut pas être autorisé avant super()
est parce qu' this
est non initialisée si super()
n'est pas appelé. Cependant, même si nous ne sommes pas à l'aide de this
nous avons besoin d'un super()
à l'intérieur d'un constructeur, car ES6 class constructors MUST call super if they are subclasses
. Ainsi, vous devez vous appelez super()
tant que vous avez un constructeur. (Mais une sous-classe n'ont pas besoin d'avoir un constructeur).
Nous appelons super(props)
dans le constructeur si nous devons utiliser this.props
, par exemple:
class App extends React.component{
constructor(props){
super(props);
console.log(this.props); // prints out whatever is inside props
}
}
J'espère que je pourrais le rendre clair.