【问题标题】:React-Virtualized: Infinitely scrolling listReact-Virtualized:无限滚动列表
【发布时间】:2017-03-24 23:22:18
【问题描述】:

我在构建无限滚动列表时遇到了问题。我需要保持滚动位置,但在底部呈现更多行。 react-virtualized 提供 scrollTo 但这似乎还不够,因为我们没有当前的 scrolledTo 索引。使用clientHeightscrollHeightscrollTop 动态计算scrollTo 索引只能提供近似值,尤其是当行具有动态高度时。

有什么建议吗?

【问题讨论】:

    标签: reactjs react-virtualized


    【解决方案1】:

    我需要保持滚动位置,但在底部渲染更多行。

    在末尾/底部添加更多行不会影响滚动位置。

    react-virtualized 提供了 scrollTo 但这似乎还不够,因为我们没有当前的 scrolledTo 索引。

    你将 scroll-to 属性传递给 react-virtualized 所以你必须拥有它。不过,如果您想在用户启动的滚动更改时收到通知,可以使用 onScrollonRowsRendered 回调。

    【讨论】:

    • 我正在使用onScroll 来捕获事件,但似乎不可能在底部添加行、从顶部删除行并保持用户视图不变。我忽略了什么吗?
    • 你为什么首先尝试这样做? react-virtualized 会自动为您执行此操作。只需告诉它总共有多少行 - 如果您在事后加载其他数据,请随意增加计数 - 它只会呈现填充视口所需的内容。像这样工作bvaughn.github.io/forward-js-2017/#/12/4
    • 我显然没有很好地解释我的问题。我有一个不断收到新提要的活动提要。用户还可以向下滚动以获取旧提要。由于这可能会导致大量内存消耗,因此我们将列表限制为 200 个内存活动。然后将该列表传递给 react-virtualized。获取旧提要后,新项目将从内存中删除,反之亦然。问题是在获取旧提要时似乎很难保持准确的滚动位置。想想看,scrollToAlignmentscrollToIndex 的组合可能会起作用。
    • 您应该能够删除旧的提要项目(例如,丢弃作为它们基础的 JavaScript/JSON 数据)而不会使 List 的位置缓存失效——在这种情况下,它仍然会影响您的滚动位置。这可能是那些不看代码和演示就很难回答的问题之一。
    • 我完全理解。创建演示项目或提供代码需要一些时间。感谢您的回复。
    猜你喜欢
    • 2017-12-28
    • 2018-09-18
    • 2020-12-04
    • 2018-01-06
    • 1970-01-01
    • 2018-12-20
    • 2020-04-09
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多