2017-01-03 15 views
1

私はFacebook tutorial for Reactを読んでいます。方法の約40%、彼らは(不変性の重要性についての)状態Why Immutability is Importantというセクションがあります:なぜ、Object.assignはReactでアプリのパフォーマンスを向上させるのですか?

は、最終的な結果は同じであるが、変異(または基礎となるデータを変更)しないことにより、今直接私たちコンポーネントと全体的なアプリケーションパフォーマンスを向上させることができるという追加の利点があります

私の質問は:なぜですか?つまり、リアクトでは、は特にです。なぜ、不変性(Object.assign(...)などを使用)が「全体的なアプリケーションのパフォーマンスを向上させるのに役立つのですか?

+0

**変更の追跡**のサブセクションは、それを非常にうまく説明しているようです - IMO - それは不明か、より技術的に詳細な説明を求めていますか? – UnholySheep

答えて

5

私はarraysを理解することが容易であることを考える:

あなたは多くの、多くのエントリを含む、arrayを持っていることを想像してみてください。 あるエントリを別のエントリに置き換えます。変更されたものがあるかどうかを確認します。reactは、array全体をループする必要があります。

さて、あなたは新しいarrayを作成し、いくつかの変更を加えること毎回を想像して - そしてreactが関係している唯一のことは、references

Object.assignを比較することで同じことを - 代わりに、既存のobjectを変更するのは、新しいものを作成しますreactは単にリアクトで参照

0

を比較することにより、変化を検出できるように、状態の変更は、オブジェクト内の個々の値の変化の違いに頼る必要はありません、場合のstatを知るのに十分ですeはまったく変わりました配列やオブジェクトなどの非プリミティブデータタイプの

、一つは、又は参照に同じ構造を指すかどうかを確認するためにチェックすることによって、等価性を確認することができます。

Object.assignまたはspread構文を使用すると、オブジェクトの新しいコピーが作成され、新しい参照が作成されます。コピーが新しい参照を指し示すので、構造を変更する意図は、参照等価チェックを行うことによって推測することができます。

警告: - 平等が反応、参照することによってではなく値によって確認されているので、ネストされた値には変化がなかった場合でも、状態が更新されているようObject.assignで更新処理します。

関連する問題