我在InfiniteLoader+List
中有react-virtualized
的情况,其中loadMoreRows
和rowCount
使我感到悲伤。
目标
- 从数据存储中加载最后40条消息
- 将列表开始放在底部
- 向上滚动 要求加载更多项目
- 添加新行后,添加到底部并自动向下滚动
什么有效
- 添加新行有效。当通过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,而是直接尝试修改示例而不冒着破坏实现的风险,因为它非常紧密地显示了我正在开始来自