2017-08-15 22 views
4

ダン・アブラモフsaysピュアReactJSコンポーネント

同じ小道具や状態与えられた同じ結果を返すことが保証されている場合...コンポーネントは純粋です。

コンポーネントに同じ小道具が指定されている場合、常に同じ出力が返されます。これは明らかです。

彼はその後、彼らのレンダリング性能がそのshouldComponentUpdate()フック

の浅い 比較によって最適化することができるので、小道具や 状態で深い変異に依存していない...

純粋な成分を語ります

しかし、これは私が同じ小道具のオブジェクトを持つ純粋な部品を供給することができることを意味しますが、その小道の中のより深いところに位置する相違点を持ち、コンポーネントは同じではあるが異なる(ただし深い違いはありますが)つまり、この制約は強制されません。

コンポーネントをextends PureComponentと言って本当にReactJSと言っています。「私は何をしているのか分かりません。私は私が不変状態を使用していることを保証していますので、shouldComponentUpdateで浅い小道具の比較を行うだけです。

最後に、PureComponentは、デフォルトで浅いshouldComponentUpdateメソッドを提供します。おそらく、これはあなたが望むもの(深い比較さえ)でオーバーライドできますか? PureComponentが本当に ReactJSに言って延びるにつれて

答えて

1

コンポーネントを宣言して「私は私がやっているか知っている。私は不変 状態を使用しています保証。あなただけ shouldComponentUpdateに浅い小道具の比較を行う必要があるので」?

はい

最後に、PureComponentsは、デフォルトでは、浅いshouldComponentUpdate方法 を提供 - おそらくこれはあなたが (さえ深い比較を)好きで上書きすることができますか?

これを上書きできます。反応はwarn youに行かないようにします。この場合は、Componentinsteadから継承する方がよいでしょう。

関連する問題