React Virtualized InfiniteLoader/Grid:如何防止滚动重置?

React Virtualized InfiniteLoader/Grid: How Can I Prevent Scroll Reset?

我有一个由 React Virtualized 的 InfiniteLoaderGrid 组件构建的无限滚动组件。如果我使用鼠标滚轮向下滚动(即相当缓慢),一切都会很好。但是,当我单击组件内的滚动条并将其向下拖动(移动得更快)时,我从未将其拖到底部。相反,在向下滚动一定百分比后,滚动条突然跳回顶部。

我尝试在 Grid 中添加 console.log 语句,但它们所显示的只是 event.target.scrollTop 从非常高的第一时刻变为 0下一个。我不明白的是,当我在浏览器中所做的所有操作都是向下移动鼠标(同时按住左键单击按钮)时,为什么 event.target.scrollTop 突然变成 0

有没有人知道我该如何解决这个问题,甚至只是调试这个问题?

原来是用户错误。

InfiniteLoaderGrid 都采用 rowCount 属性,但两者的值非常不同。 InfiniteLoader 需要 numItemsrowCount,但 Grid 需要 Math.ceil(numItems/columnCount)rowCount。我 "fixed" 通过对两者使用 InfiniteLoader 版本来解决一个单独的问题,但我真正需要做的是为它们传递不同的值。

一旦我弄明白了这一点并将两者设置为不同的值,奇怪的滚动重置就消失了。尽管在 React Virtualized 源代码中倾注了相当长的一段时间,但我仍然无法弄清楚当 rowCount 超过。好吧。