如何在不加载完整数据集的情况下从底部开始,然后向上滚动加载下一批

时间:2019-07-09 18:39:05

标签: react-virtualized

我在InfiniteLoader+List中有react-virtualized的情况,其中loadMoreRowsrowCount使我感到悲伤。

目标

  1. 从数据存储中加载最后40条消息
  2. 将列表开始放在底部
  3. 向上滚动 要求加载更多项目
  4. 添加新行后,添加到底部并自动向下滚动

什么有效

  • 添加新行有效。当通过loadMoreRows加载新行并从数据存储区中提取一条消息时,可以调用List的scrollToIndex
  • 加载一批 last 40行有效

什么不起作用

  • 在第一次加载后确保/更新开始/停止索引,因此他们知道我们已经从底部加载了40行,因此向上滚动可显示例如161-200,以此类推,以防止加载从0-40开始的行。

我尝试过的

通过调用loadMoreRows({startIndex = 200,stopIndex = 240})开始加载

到目前为止,它可以正常工作,以使第一批行从上到下从200到240列出。 但是,这有一个副作用,这意味着下一批行仍从0开始,并且以例如0-40、41-80、81-120等。但是,这样会导致结果所有消息将被加载,并且顺序完全错误

通过调用loadMoreRows({startIndex = 0,stopIndex = 40})开始加载,并传递将scrollToIndex移动到最后一行的道具

到目前为止,第一批行从0-40加载,滚动条移至第40行,第二批41-80加载,依此类推。与上述情况相比,这些文件以正确的顺序加载。 但是,就像在最后一种情况中一样, all 消息已加载,这根本不好,因为在开始时实际上可以加载成千上万的行。

问题(换句话说,也许更具体?)

如何告诉索引我们实际上在200-240之间,而不是0,以便向上滚动通过开始/停止索引161/200,依此类推?

参考

注意事项

  • Plunker显示了InfiniteLoader和List的相当普通的实现,但它还包含WindowScroller。我个人并不在乎WindowScroller,而是直接尝试修改示例而不冒着破坏实现的风险,因为它非常紧密地显示了我正在开始来自

0 个答案:

没有答案