[訳]React ES 6 class construct super()


私たちはReactを書く時にES 6のクラス文法を使います.よく見られるのは以下の通りです.
class MyClass extends React.Component{
    constructor(){
        super()
    }
}
ここに二つの問題があります.
  • constructorsuper()関数を呼び出す必要がありますか?
  • 呼び出しsuper()super(props)の違いは何ですか?
  • 解答Q 1:
    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()