react-virtualized's無限のスクロールリストがあります(ほとんどの設定はthis exampleからコピーされています)。私はそれにspecsのようなrowRenderer
機能を提供しています。 rowRenderer
関数が非常に(つまり、非常に基本的なコンポーネントを行として返します)の場合、これは問題なく動作します。 ですが、私のRowComponent
のレンダリングには、一部のプロパティではArray.map
が含まれています。これは、rowRenderer
関数がスクロール中に,、さらには,と呼ばれていることを除いては問題ありません。これはパフォーマンス上の問題を引き起こし、スクロールが十分に滑らかではありません。 は、これまで私が試した:スクロール中にVirtualScrollのrowRendererメソッドが何度も呼び出されます
- が、これは動作しますが、それは将来的に問題を引き起こす可能性として、私はこのソリューションを好きではない私の
rowRenderer
をキャッシュ。 - 私の
RowComponent
のレンダリング関数を純粋にして、を使用してshouldComponentUpdate
を実装してください。パフォーマンスはやや向上しましたが、十分ではありませんでした。スクロールあたりthis exampleで
、rowRenderer
機能とも呼ばれている何回も私は、この動作は仕様であると考えています(そこにはPERFの問題機能は非常に軽量であるため)、。 so:
キャッシュは良い解決策ですか?どのように私のアプリの状態(私は状態管理のためのreduxを使用して)それを同期するための任意のアドバイスですか?私がrowRenderer
への呼び出しを減らすことができるドキュメントには欠けているものがあります(スクロール中に私の行が変わる理由はありません)?
解説:レンダリングされる_unique_行の数や、指定された行が複数回レンダリングされることが懸念されますか? – brianvaughn
私は、与えられた行が2回以上レンダリングされているということについてもっと気になります。 rowRendererへの呼び出しの最終的な量は本当の痛みであり、どちらかを減らすことで減らすことができます。 – YakirNa
私はそれを再レンダリングしないようにレンダリングされた行をキャッシュするブランチを持っています。私はそれが私のv7リリースに入ることを望んでいる。 – brianvaughn