我有一个react-virtualized 的无限滚动列表,(大部分设置都是从这个例子复制而来的)。我正在为它提供规范rowRenderer
所需的功能。如果该函数非常轻量级(即返回一个非常基本的组件作为行),则此方法可以正常工作。但我的渲染包括一些超过一些属性。这应该不会导致任何问题,除非函数在滚动时被调用数十次甚至数百次。这会导致性能问题,使滚动不够平滑。到目前为止,我尝试过:rowRenderer
RowComponent
Array.map
rowRenderer
- 缓存我的
rowRenderer
这个工作,但我不喜欢这个解决方案,因为它可能会在未来引起问题。 - 使我
RowComponent
的渲染函数纯净并shouldComponentUpdate
使用react-addons-shallow-compare
. 这略微提高了性能,但还不够。
在这个例子中,这个rowRenderer
函数在每次滚动时也被调用了很多次(没有性能问题,因为这个函数非常轻量级),这让我相信这种行为是设计使然。所以:
缓存是一个好的解决方案吗?关于如何将它与我的应用程序状态同步的任何建议(我使用 redux 进行状态管理)?我在文档中遗漏了什么可以减少调用rowRenderer
(滚动时我的行没有理由改变)?