2016-03-03 8 views
13

私はReact Nativeプロジェクトに取り組んでおり、ReactコンポーネントにはES6クラスを使用しています。React.js - すべてのコンポーネントメソッドにプロパティ初期化子を使用

リアクションチームは自動バインディングを持たないため、リアクションチームrecommendsは、同じ効果を作成するために矢印機能付きのES7プロパティ初期化子を組み合わせています。

一貫性があると、この結合との混同を防ぐために、私はすべてのコンポーネントのメソッドのためにES7プロパティの初期化子を使用しています:

class Foo extends React.Component { 
    constructor(props) { 
    super(props); 
    ... 
    } 

    componentDidMount =() => { 
     ... 
    }; 

    bar =() => { 
    ... 
    }; 

    render =() => { 
    ... 
    }; 
} 

私が思っていた - されているが、深刻なパフォーマンスの警告が知っておくために?特に、私はrender()メソッドについて不思議です。

全体として、これは良いアプローチのようですか?

答えて

10

最大の注意点は、この特定の機能が標準ではなく、まだ合意していないことです。 (ES7がないのでES7にはならないかもしれませんが、ES2017でもまだ不明です)

新しい長命オブジェクトをいくつか割り当ててクラスに保存するコストもあります。

私はこれをお勧めしません。ちょうどコールバックのため。

+0

フィードバックありがとうございます! – ender672

+1

クイックフォローアップ - 私のチームはコールバックのためにbind()メソッドを使用することに決めました。そして今、矢印関数を持つプロパティ初期化子を保留しています。あなたの反応は、私たちがこの決定に至るのに役立ちました。 – ender672