[訳]React ES 6 class construct super()
2833 ワード
私たちはReactを書く時にES 6のクラス文法を使います.よく見られるのは以下の通りです.は 呼び出し 解答Q 1:
Always call super()if you have a constructor and don't wory about it if you don't have a construct
あなたが
解答Q 2:
Call super(props)only if you want to access this.props inside the construct.React atomatic allyset it for you if you want to access it anywhere else.
原文リンク:React ES 6 class constructor super()
class MyClass extends React.Component{
constructor(){
super()
}
}
ここに二つの問題があります.constructor
でsuper()
関数を呼び出す必要がありますか?super()
とsuper(props)
の違いは何ですか?Always call super()if you have a constructor and don't wory about it if you don't have a construct
あなたが
constructor
を持っている時にsuper()を呼び出してこそコードを見る必要があります.class MyClass extends React.component{
render(){
return Hello {this.props.world}
}
}
上記のコードは完全に規定に合致していますので、あなたが実際に作成したReact Componentごとにsuper()
を呼び出す必要はありません.もしあなたのコードの中にconstructor
があれば、super()
を呼び出す必要があります.class MyClass extends React.component {
constructor(){
console.log(this) //Error: 'this' is not allowed before super()
}
}
上記のエラーが発生した理由は、 super()
が呼び出されていない前に this
が初期化されていないからです.より多くのことを知っています.頭の良いあなたは空のconstructor
を使ってsuper()
を脱出したいと思います.class MyClass extends React.component {
constructor(){} // Error: missing super() call in constructor
}
ES 6の class
のconstructorは、サブクラスに属している場合はsuper()
メソッドを呼び出す必要がありますので、コードがあると constructor
を呼び出す必要があります.解答Q 2:
Call super(props)only if you want to access this.props inside the construct.React atomatic allyset it for you if you want to access it anywhere else.
super()
のconstructor
を取得したいなら、this.props
を呼び出してください.その後、Reactは自動的にあなたのために配置されます.どこで呼び出してもいいです.super(props)
とsuper()
の違いを見てください.class MyClass extends React.component{
constructor(props){
super();
console.log(this.props); // this.props is undefined
}
}
super(props)
を使用すると、super(props)
からthis.propsが取得されます.class MyClass extends React.component{
constructor(props){
super(props);
console.log(this.props); // prints out whatever is inside props
}
}
もちろんもう一つは他のところで使いたい時でも、propsをconstructorに送る必要はないです.Reactは自動的にあなたのために設置されています.もっと詳しいことを知っています.class MyClass extends React.component{
render(){
// There is no need to call `super(props)` or even having a constructor
// this.props is automatically set for you by React
// not just in render but another where else other than the constructor
console.log(this.props); // it works!
}
}
とにかくconstructor
方法をバインドする必要があるということは理解しています.またはconstructorで操作propsを使ってstateを定義する必要があるなら、construtorが必要です.そうでなければ、他の方法でthis.propsを使用する必要はありません.原文リンク:React ES 6 class constructor super()