2016-12-27 7 views
32

公式React docsは、「React.PureComponentshouldComponentUpdate()はオブジェクトを浅く比較しているだけです」という状態を示し、状態が「深い」場合はこれに対して助言します。React.ComponentとReact.PureComponentとの比較

これを考えると、リアクタンスコンポーネントを作成するときに、なぜReact.PureComponentを好むべきなのですか?

質問

  • 我々はReact.PureComponentのために行くことを検討React.Componentを使用して任意のパフォーマンスへの影響はありますか?
  • shouldComponentUpdate()PureComponentは、浅い比較のみを実行します。これが当てはまる場合、より深い比較のために前記方法を使用することはできないか?
  • さらに、React.PureComponentshouldComponentUpdate()は、コンポーネントのサブツリー全体のプロップアップデートをスキップします。 - これは小道具変更が無視されることを意味しますか?

質問があれば、このmedium blogに役立ちます。

+1

投稿してから数ヶ月が経ちましたが、この記事が参考になると思っています:https://60devs.com/pure-component-in-react.html – MrOBrian

答えて

57

React.PureComponentReact.Componentの主な違いは、状態変化の浅い比較PureComponentんです。これは、スカラー値を比較するときに値を比較することを意味しますが、オブジェクトを比較するときは参照のみを比較します。それは、アプリケーションのパフォーマンスを向上させるのに役立ちます。

以下のいずれかの条件を満たす場合はReact.PureComponentに行ってください。

  • 州/小道具は不変オブジェクト
  • 状態でなければなりません/小道具はあなたが確認する必要がありますReact.PureComponentを使用している場合、データが

を変更したときにあなたがforceUpdateを呼び出す必要があります階層

  • を持つべきではありませんすべての子コンポーネントも純粋です。

    React.componentを使用するとパフォーマンスに影響はありません。 React.PureComponentを検討してください。

    はい、それは私がPurecomponentだけ 浅い比較を実行のshouldComponentUpdateを()推測してい

    (理由は浅い比較の)アプリのパフォーマンスが向上します。この場合、上記の方法で深い比較のために を使用することはできませんか?

    あなたは正しく推測しました。上記のいずれかの条件を満たしていれば、それを使うことができます。

    "さらに、React。PureComponentのshouldComponentUpdate()は、「全コンポーネントのサブツリーのための小道具 更新をスキップ - ? 変更を支えるこの平均値は無視されているん

    を、それは浅い比較して違いを見つけることができなかった場合ははい、小道具の変更は無視されます

  • +0

    こんにちは@VimalrajSankar。次のステートメントの例を挙げてください: 'スカラー値を比較すると、 ir値を返しますが、オブジェクトを比較するときは参照のみを比較します。それは、アプリケーションのパフォーマンスを向上させるのに役立ちます。ありがとう –

    +0

    @ Mr.Script私はこれが助けてくれることを願っています。https://stackoverflow.com/a/957602/2557900 – vimal1083

    +0

    「状態/小道具は階層を持ってはいけません」申し訳ありません。 –

    関連する問題