私は5000製品の名前と価格をレンダリングする簡単な反応アプリを持っています。価格は編集可能で、変更されると価格が州に反映されます。Reactは、1つのアイテムが変更されたときにリスト全体を再レンダリングする
https://github.com/TonyCaffer/thinking-in-react-1
App.js状態を管理し、ProductTableに渡されonChangePrice機能を経由して価格変動を、処理し、各ProductRowに
私は不変-ヘルパーを使用し、私は特に、変更された製品の状態レコードのみを変更します。
しかし、Reactがすべての製品を再レンダリングしているため、各変更ごとに1秒遅れがあります。各製品には、Reactが必要なコンポーネントだけを再レンダリングするのに役立つと思った重要な特性があります。
プロダクションビルドではそれほど時間はかかりませんが、すべてのプロダクトが再レンダリングされます。これは私が修正しようとしている根本的な問題です。
なぜすべての製品コンポーネントが再レンダリングされますか?これは、高レベルのProductTableを通じてthis.state.productsを渡すので、リストの再描画がトリガーされるからですか?もしそうなら、各ProductRowは、状態がリストにあるときに、どのようにして自身のレコードの状態を管理できますか?
再レンダリングを停止しません。それは、以前に呼ばれたのと同じコンポーネントを呼び出すことになり、 'componentWillMount'の代わりに' componentWillUpdate'を呼び出します。レンダリングを停止するには、 'shouldComponentUpdate'を使用してレンダリングを停止します。 –