2017-05-05 4 views
5

私はコンストラクタメソッドについてはReact Docsを読んでいますが、それは設定状態とバインディング関数まではどのように使用できるのですか?しかし、ほとんどの場合本当に必要ですか?実際のコンストラクタメソッド

export default class MyClass extends Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
      foo: 'bar', 
     }; 
     this.member = 'member'; 
     this.someFunction = this.anotherFunction(num); 
    } 
    anotherFunction = (num) => num * 2; 
    render() { 
     // render jsx here 
    } 
} 

をやって、単に私が知っておくべきすべてのパフォーマンスの問題がある一つの選択肢は、他のより好ましい

export default class MyClass extends Component { 
    state = { 
     foo: 'bar', 
    }; 
    member = 'member'; 
    someFunction = this.anotherFunction(num); 
    anotherFunction = (num) => num * 2; 
    render() { 
     // render jsx here 
    } 
} 

のように、コンストラクタの外にすべてのことを置くこととの違いは何ですか?これは少し私を悩まされていると私はそこに具体的な答えを見つけるように見えることはできません。

+0

'foo = bar'構文*外部*コンストラクタは有効なJavaScriptではありませんが、これは実験的な機能です。 –

答えて

5

あなたの2つの例は機能的には同じですが、重要なのは、クラスメソッドの外にあるものを割り当てることですが、renderと以外のものはすべて標準のES6ではなくBabelを介してのみ動作します。その構文は提案されたclass property syntaxです。

+0

私はバベルがその魔法を働いていたことは知っていましたが、トレードオフが(あれば)どういうものかは分かりませんでした。また、私は[この記事](https://medium.com/joshblack/writing-a-react-component-in-es2015-a0b27e1ed50a)が助けになることを発見しました。ありがとう。 – user3802738

関連する問題