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