2017-05-29 8 views
0

を注入:コンポーネントが再なるためが再来のドキュメントで構成要素に状態をReduxの、再レンダリング

https://github.com/reactjs/react-redux/blob/master/docs/api.md#inject-dispatch-and-every-field-in-the-global-state

それが、これはパフォーマンスを殺すことを、接続した機器に完全な状態を注入すると言いますすべてのアクションでレンダリングします。

今、私はそれがなぜだろうかと思います。デフォルトの厳密な等しくないでしょうareStatesEqual関数とデフォルトの浅い均等areStatePropsEqual関数は、少なくとも状況をキャッチします、状態が変更されていない?あるいは、ドキュメントは、状態がおそらくすべてのアクションで変わると仮定していますか?正確に何をしたいです

答えて

0

each only listen to a relevant slice of the state

。すべてのコンポーネントに完全な状態を注入する必要はありません。状態の一部が変更されるたびに、その状態がほとんどのコンポーネントに関係しない場合、すべてのコンポーネントが再描画されます。コンポーネントが関連性のない状態をリッスンしないようにすることは望ましくありません。なぜなら、パフォーマンスに悪い無駄な再レンダリングを実行するためです。

ほとんどの場合、アクションが発生すると少なくとも一部の状態が変更されます。これはアクションの全体点であるためです。状態の更新をトリガする。

+0

OK、状態が変わらないならば、私のコンポーネントは再レンダリングしないでしょうか? – ghost23

+0

@ ghost23はい、アクションが発生しても、コンポーネントに注入された状態が変更されない場合、コンポーネントは再レンダリングされません。これは、アプリケーションが正しく書かれていて、 render()関数などで新しいインスタンスを作成するようなことをしてください。この記事は非常に参考になります:https://medium.com/@esamatti/react-js-pure-render-performance-anti-pattern-fb88c101332f – sheunis

関連する問題