この質問は、React 0.14に関するリリースノート(およびその他の関連する誇大広告)を読んでから、頭の中で何度も繰り返されています -私はReactの大ファンで、ステートレスコンポーネント(https://facebook.github。 io / react / blog / 2015/09/10 / react-v0.14-rc1.html#stateless-function-components)は、そのようなコンポーネントを簡単に記述できることと、これらのコンポーネントの意図をコードで表現することの両方にとって優れたアイデアです。コンポーネントは、同じ小道具データを一貫してレンダリングするという点で「純粋」である必要があります。
問題は、Reactがこれらのステートレスコンポーネント関数を完全に最適化せずに最適化し、props参照がコンポーネント内で操作されないだけでなく、変更できないという点で不変であると仮定して、どのように最適化できるかです。コンポーネントのライフサイクル外ですか?「通常の」コンポーネント(ステートフルコンポーネント、つまりライフサイクル全体を通過するコンポーネント。componentWillMount、getInitialStateなど)にオプションの「shouldComponentUpdate」関数があるのは、Reactがすべてのプロパティと状態参照は完全に不変です。コンポーネントがレンダリングされた後、props参照の特定のプロパティが変更される可能性があるため、同じ「props」インスタンスには後で異なるコンテンツが含まれる可能性があります。これが、完全に不変の構造体を使用することに大きな興奮をもたらした理由の1つであり、ReactでOmを使用すると、パフォーマンスが大幅に向上すると言われているのです。そこで使用された不変の構造体は、オブジェクトの特定のインスタンスが決して変更されないことが保証されているため、shouldComponentUpdateは、propsとstate(http://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/)。
私はこれについてより多くの情報を見つけようとしましたが、どこにも行きませんでした。小道具のデータが不変のタイプで構成されると仮定せずに、ステートレスコンポーネントの周りでどのようなパフォーマンスの向上が見込めるかは想像できません。おそらく、「小道具」と「nextProps」が同じデータ?
私は誰かが内部情報を持っているのか、あるいはこれに関する他の啓蒙的な洞察を持っているのかと思っただけです。Reactが小道具のタイプを「完全に不変」にするよう要求し始めた場合(データが変更されていないことを確認するために参照等価比較を許可します)、それは大きな前進になると思いますが、大きな変更になる可能性もあります。