描述
我有一个可能在 react-virtualized 中呈现的项目列表VirtualScroll
。
列表中的每个项目(行)都有相当多的元素,其中一个会打开上下文菜单。我正在尝试使用react-tether
在 HTML 上呈现该菜单body
(以便当项目位于可滚动列表的底部/顶部时它不会隐藏)并在用户滚动列表时将菜单“卡在”我的项目上.
我的问题是更新绑定菜单的位置有明显的滞后。
到目前为止我采取的一些步骤:
- 呈现了一个简单的列表,没有
VirtualScroll
. 系留菜单呈现流畅,没有明显的卡顿。这就是我得出的结论是问题出在react-virtualized
- 按照此处的建议,将我
rowRenderer
的简化为仅菜单触发器。 - 在行组件中实现
shouldComponentUpdate
。这大大提高了感知性能,大大减少了延迟,但仍然很明显。 - 检查了 Chrome devtools 的时间线。
Grid.js
我看到由和触发的回流tether.js
。
库版本:
- react-virtualized v. 7.24.3(大型项目,尚未准备好迈向 8.x 的步骤)
- 反应系绳 v. 0.5.2
- 反应 v. 15.2.1
工作演示
https://plnkr.co/edit/f7OhCoCXkDsWbyjxhR3f
截屏: