我有一个带滚动条的大型React组件。我想在滚动时对一些组件进行一些小的更改(基本上是为了保持表格的最左边的列粘在屏幕的左侧)。
通常情况下,我会将表示组件滚动位置的道具传递给滚动时需要更新的组件,但滚动时重新渲染整个组件会使整个组件大量滞后。但是整个事情并不需要重新渲染 - 只需要几个小部分来确保它们保留在屏幕的正确部分
是否有一种很好的方法只能重新渲染组件的一小部分,或者是否有另一种方法可以处理像这样的大型组件的频繁更新?
答案 0 :(得分:0)
实施可能会有点毛茸茸,但是你有没看过{{[3.0 4.0][7.0 3.0][1.0 4.0]}
{[2.0 7.0][4.0 6.0][5.0 6.0][4.0 9.0]}
{[5.0 11.0][4.0 16.0]}}
? (docs)
您可以跟踪滚动并使用它来跳过更新您不想更新的部分 - 例如。将shouldComponentUpdate
道具传递给某些孩子,如果它是真的则跳过更新,或者只有在scoll距离改变了一定数量或一定时间后才更新。
根据您想要的视觉效果,另一个选项是使用占位符替换慢速部分的内容,在设置isScrolling
道具时更容易渲染 - 我们使用{{1}做类似的事情支持和加载GIF,效果很好。