【发布时间】:2017-06-29 11:11:27
【问题描述】:
我有一个 React Virtualized InfiniteList/Grid 组合,遵循文档 (https://github.com/bvaughn/react-virtualized/blob/master/docs/InfiniteLoader.md#infiniteloader-and-grid) 中的基本模式。
效果很好,除了两件事:
如果我滚动得太快,而不是等待事情赶上,它会将滚动重置到网格顶部
-
组合只获取前 N 个结果(例如 125)......即使我有 859 个结果(即使我提供了 859 作为
rowCount属性)- 这特别奇怪,因为它以 25 为增量获取,所以这意味着前 5 次一切正常,然后在第 6 次莫名其妙地失败了。
我已经尽我所能弄清楚发生了什么,即使我用 console.log 和 debugger 语句填充 React Virtualized 代码,我仍然无法弄清楚为什么它会停止在 125 个结果(或为什么快速滚动重置)。
任何更熟悉 React Virtualized 的人能指出我在代码中决定是继续获取还是停止(并可能将开始索引重置为 0)的位置?我可以看出涉及到 InfiniteScroll 的 onRowsRendered 和 scanForUnloadedRanges 和 Grid 的onSectionRendered,但我仍然无法弄清楚值处理在哪里停止以及实际的“决定是否继续”逻辑开始。
【问题讨论】:
-
附上一个 Plnkr 并附上你正在做什么的例子。
-
不幸的是,创建示例涉及的代码太多。但是,我并不是在寻找针对我的特定问题的解决方案,只是想了解 React-Virtualized 的工作原理(特别是它决定是继续获取还是停止的地方)。
-
好吧,我可能是在说你已经知道的,但是,决定何时加载数据的组件是
InfiniteLoader,这里是:github.com/bvaughn/react-virtualized/blob/master/source/…。它不是太大,所以也许值得通过源扫描。我还写了一个如何使用InfiniteLoader的方法指南:github.com/bvaughn/react-virtualized/blob/master/docs/… 和另一个示例:github.com/bvaughn/react-virtualized/blob/master/docs/… -
"任何更熟悉 React Virtualized 的人可以指出我在代码中决定是继续获取还是停止的位置" 我想你正在寻找这个: github.com/bvaughn/react-virtualized/blob/…
-
也许断开连接是因为您没有意识到您的应用程序应该跟踪已加载(和正在加载)的行?
InfiniteLoader本身没有状态。这在我上面发布的 2 个示例中得到了说明。