React Virtualized InfiniteLoader/Grid:如何防止滚动重置?
React Virtualized InfiniteLoader/Grid: How Can I Prevent Scroll Reset?
我有一个由 React Virtualized 的 InfiniteLoader
和 Grid
组件构建的无限滚动组件。如果我使用鼠标滚轮向下滚动(即相当缓慢),一切都会很好。但是,当我单击组件内的滚动条并将其向下拖动(移动得更快)时,我从未将其拖到底部。相反,在向下滚动一定百分比后,滚动条突然跳回顶部。
我尝试在 Grid
中添加 console.log
语句,但它们所显示的只是 event.target.scrollTop
从非常高的第一时刻变为 0
下一个。我不明白的是,当我在浏览器中所做的所有操作都是向下移动鼠标(同时按住左键单击按钮)时,为什么 event.target.scrollTop
突然变成 0
。
有没有人知道我该如何解决这个问题,甚至只是调试这个问题?
原来是用户错误。
InfiniteLoader
和 Grid
都采用 rowCount
属性,但两者的值非常不同。 InfiniteLoader
需要 numItems
的 rowCount
,但 Grid
需要 Math.ceil(numItems/columnCount)
的 rowCount
。我 "fixed" 通过对两者使用 InfiniteLoader
版本来解决一个单独的问题,但我真正需要做的是为它们传递不同的值。
一旦我弄明白了这一点并将两者设置为不同的值,奇怪的滚动重置就消失了。尽管在 React Virtualized 源代码中倾注了相当长的一段时间,但我仍然无法弄清楚当 rowCount
超过。好吧。
我有一个由 React Virtualized 的 InfiniteLoader
和 Grid
组件构建的无限滚动组件。如果我使用鼠标滚轮向下滚动(即相当缓慢),一切都会很好。但是,当我单击组件内的滚动条并将其向下拖动(移动得更快)时,我从未将其拖到底部。相反,在向下滚动一定百分比后,滚动条突然跳回顶部。
我尝试在 Grid
中添加 console.log
语句,但它们所显示的只是 event.target.scrollTop
从非常高的第一时刻变为 0
下一个。我不明白的是,当我在浏览器中所做的所有操作都是向下移动鼠标(同时按住左键单击按钮)时,为什么 event.target.scrollTop
突然变成 0
。
有没有人知道我该如何解决这个问题,甚至只是调试这个问题?
原来是用户错误。
InfiniteLoader
和 Grid
都采用 rowCount
属性,但两者的值非常不同。 InfiniteLoader
需要 numItems
的 rowCount
,但 Grid
需要 Math.ceil(numItems/columnCount)
的 rowCount
。我 "fixed" 通过对两者使用 InfiniteLoader
版本来解决一个单独的问题,但我真正需要做的是为它们传递不同的值。
一旦我弄明白了这一点并将两者设置为不同的值,奇怪的滚动重置就消失了。尽管在 React Virtualized 源代码中倾注了相当长的一段时间,但我仍然无法弄清楚当 rowCount
超过。好吧。