反応仮想化の無限スクロール リストがあります (セットアップのほとんどはこの例からコピーされます)。スペックrowRenderer
通りの機能を提供しています。関数が非常に軽量である場合 (つまり、非常に基本的なコンポーネントを行として返す場合)、これは問題なく機能します。しかし、私のレンダリングにはいくつかのプロパティが含まれています。これは、スクロール中に関数が数十回または数百回呼び出されることを除いて、問題を引き起こすことはありません。これにより、パフォーマンスの問題が発生し、スクロールが十分にスムーズになりません。これまでのところ、私は試しました:rowRenderer
RowComponent
Array.map
rowRenderer
- これ
rowRenderer
は機能しますが、将来問題が発生する可能性があるため、このソリューションは好きではありません。 - my
RowComponent
の render 関数を pure にして、shouldComponentUpdate
を使用して実装しreact-addons-shallow-compare
ます。これにより、パフォーマンスがわずかに改善されましたが、十分ではありませんでした。
この例では、rowRenderer
関数はスクロールごとに何度も呼び出されています (関数は非常に軽量であるため、パフォーマンスの問題はありません)。この動作は設計によるものだと思われます。so:
キャッシングは良い解決策ですか? アプリの状態と同期する方法に関するアドバイスはありますか (状態管理に redux を使用しています)。への呼び出しを減らすことができるドキュメントで見逃したものはありますかrowRenderer
(スクロール中に行が変更される理由はありません)?