React-virtualized InfiniteLoader/List - 使用 AJAX 的工作示例

2023-12-19

我正在做一个 React/Redux 项目,需要实现一个虚拟化/无限加载列表。react-virtualized似乎打算完成这项工作,但即使在阅读了所有可用文档并阅读了许多 StackOverflow 帖子之后,我仍无法使其工作或找到有关组件实际工作原理的清晰解释。

我看过的主要例子是:

https://github.com/bvaughn/react-virtualized/blob/master/docs/creatingAnInfiniteLoadingList.md https://github.com/bvaughn/react-virtualized/blob/master/docs/creatingAnInfiniteLoadingList.md

https://github.com/bvaughn/react-virtualized/blob/master/docs/InfiniteLoader.md#examples https://github.com/bvaughn/react-virtualized/blob/master/docs/InfiniteLoader.md#examples

我遇到的主要问题是:

  1. 目前还不清楚加载程序是如何触发调用的loadMoreRows()在初始加载/渲染情况下。典型的场景是我们设计组件通过调用数据来初始化自身loadMoreRows()当它最初渲染时。实现这一点所需的配置值并不明显。

  2. 目前尚不清楚是否rowCount属性旨在代表当前状态loadedrows(数据块/页中的行数),或完整行数据集的总数。而且,无论哪种情况,在进行初始 AJAX 加载调用之前都无法知道这些,那么设置初始值的目的是什么?rowCount?

我尝试将各种示例中的代码放入我的项目中,但我从未看到过loadMoreRows正在拨打电话。我认为需要的是一个充实的示例,它演示了一个非常典型的用例:a)最初渲染一个空列表,然后触发初始数据加载调用; b) 更新rowCount财产,以及何时/何地这样做; c) 管理表示当前数据块/页的当前加载的数据集。

任何指示将不胜感激。


loadMoreRows作为道具传递给InfiniteLoader(您可以在示例中看到这一点)。它并不意味着手动调用,而是由内部使用InfiniteLoader and List,向下滚动时自动调用。

rowCount可以同时具有这两种行为。您的 API 可以在不获取全部项目的情况下判断有多少项目,或者不能。rowCount简单地告诉List有多少行。

举例来说,假设我们有 100 个商店,我们的第一次提取给了我们前 10 个。同样的响应应该说明是否还有更多商店需要提取。另一次获取可以告诉我们总共有 100 家商店。 有了这个,我们可以使用 100 的总数作为rowCount(通过查询店铺总数,不获取全部)OR我们可以使用 10 + 1 作为rowCount,正如第一次获取告诉我们还有更多商店需要加载。

这意味着什么?

如果我们加载了前 10 个商店,并使用rowCount = 100, InfiniteLoader将显示 100 行,但只有前 10 行有任何内容,其余行显示“正在加载”行占位符组件。当您向下滚动时会出现“尚未加载”行,InfiniteLoader会调用loadMoreRows函数可以加载更多行。

另一方面,如果我们使用rowCount = 10 + 1, InfiniteLoader将仅显示 11 行,其中只有最后一行是“正在加载”行占位符组件。什么时候loadMoreRows叫做,rowCount将会items.length + 1 === 20 + 1.

加起来

loadMoreRows并不意味着要手动调用。它被自动调用InfiniteLoader当一行isn't已加载正在显示在视口中。所以最初rowCount可能只是1,不会加载任何行,并且loadMoreRows会被称为。

rowCount可能是currentItems.length + (moreToBeLoaded ? 1 : 0) or totalItems。区别在于向用户显示的内容,或者“哎呀,已加载内容结束,请稍等片刻" or "看,这些是所有的项目,但还没有加载,请等待一些加载"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React-virtualized InfiniteLoader/List - 使用 AJAX 的工作示例 的相关文章

随机推荐

  • 从动态 json 数据更新力导向图上的链接

    我是 D3 的新手 正在研究力定向图 其中 json 数据是动态的 我能够在收到新数据后更改力图 但这会产生弹跳效应 创建我的力图的代码是 div class graph div
  • MySQL 与 InnoDB 的死锁问题

    我有一个中央数据库服务器和几个 工作 服务器 它们同时执行这样的查询 UPDATE job queue SET worker 108 166 81 112 attempts attempts 1 started 2014 01 14 10
  • PySimpleGui 右对齐框架中的按钮

    我正在构建一个简单的 GUIpysimplegui并想要右对齐框架内的按钮 我找到了有关如何使用文本而不是按钮执行此操作的详细信息 例如 我希望下面的按钮能够卡入框架的右侧 周围有凹槽 我要这个 看起来更像这样 但无需添加手动调整的空白文本
  • 如何检查鼠标是否位于控件上

    如何检查鼠标是否位于某一 HWND 上方 我尝试过使用 WM MOUSELEAVE 和 WM MOUSEMOVE 消息来跟踪 但是如果您单击按钮并将鼠标拖出按钮 则在释放鼠标之前它不会收到 WM MOUSELEAVE 这为时已晚 因为 当您
  • 如何通过 log4net 记录机器名称?

    我使用 Log4Net 和 AdoNetAppender 将消息从简单的系统托盘应用程序记录到 SQL Server 2005 数据库中 我想将计算机名称与日志消息一起记录 因为该应用程序将在多台计算机上运行 并且我需要知道消息源自哪一台计
  • asp.net MVC3 部分视图结果不更新 EditorFor 值

    我有一个简单的电子邮件捕获表单作为我的主页的一部分 但是当我返回部分视图时 表单编辑器的模型值没有更新 该模型 public class Contact Key public int Id get set Required public s
  • 在每个 PHP 回溯级别获取范围内的变量?

    有没有办法在回溯中查看每个堆栈帧中设置的变量 我可以通过组合来非常接近debug backtrace true 来获取对象 get object vars在每个对象上获取 this vars args每个回溯帧中的键 以及get defin
  • 为什么FocusNode需要在flutter中进行处置?

    我有点很困惑何时使用dispose扑腾中 有关于这方面的好的教程吗 在食谱中https flutter io docs cookbook forms focus https flutter io docs cookbook forms fo
  • 在 Android 中将视频流传输到网络

    我想制作一个可以将视频流传输到网络的 Android 应用程序 我知道如何在 Android 中录制视频 但不知道如何将其流式传输到网络 我不想将此视频存储到手机的 SD 卡上 但我希望将其存储在网络上 为此 我计划使用 ASP NET W
  • AWS ECS:运行任务失败原因:[“ATTRIBUTE”]

    当尝试在 EC2 实例中运行任务时 我收到了这条可怕的错误消息 Run tasks failed Reasons ATTRIBUTE 和其他许多人一样 https stackoverflow com questions 45173637 u
  • 如何防止在未插入行时触发插入触发器?

    我有一个表1 在此表上我创建了一个触发器 插入或更新或删除之后 现在 如果我执行一个不插入任何内容的插入 触发器仍然会被触发 insert into TABLE1 select from TABLE1 where 1 0 该查询不会插入任何
  • IObservable 按下的按键

    所以我可以尝试反应式扩展 我想创建一个用户按下的按键的 IObservable 我怎样才能做到这一点 这是一个 C 控制台应用程序 尝试这样做来获取可观察的读取键序列 IObservable
  • 如何使用 C# .NET CORE 2.0 将 FIX 登录消息发送到 GDAX

    我正在尝试建立一个到 fix gdax com 的 FIX 4 2 会话 文档 https docs gdax com fix api https docs gdax com fix api 使用 C 和 Net Core 2 0 当我尝试
  • .NET 内部编码

    NET 应用程序的内部编码是什么 例如字符串对象 我可以定义我的应用程序应使用什么编码吗 如果我将 net 字符串写入文件 字符串是什么编码 edit Dim test as String Das ist ein Test lt what
  • Amazon S3 预签名 url - 手动或一次性上传无效

    我正在使用 S3 接受用户到 S3 的直接上传 因此我将使用预签名的网址 上传成功后 AWS Lambda会确保上传的文件是图像 然后客户端会告诉我的服务器他已经完成上传 然后我的服务器将检查该文件是否存在于 S3 中 如果 Lambda
  • 为什么pygame中的文字显示2秒

    我显示的文本仅显示约 2 秒 我希望当我点击其他区域时它会显示 elif msg 0 7 YOU WIN and Message id 200 print You Win textSurface font render You Win Tr
  • Rails - 回形针 - 多张照片上传不保存

    我正在尝试在 Rails 中创建一个创建产品页面 这包括添加多个图像和文本字段 我有一种产品模型和一种照片模型 我正在使用回形针宝石来上传照片 但当我查看产品页面时 我没有看到任何图片 照片未保存到数据库中 附 我使用 HAML 应用程序
  • 为什么 `id id` 不是 OCaml 中的值?

    我仍在尝试理解 OCaml 中的值限制 并且我正在通读赖特的论文 https cs au dk hosc local LaSC 8 4 pp343 355 pdf 其中指出 fun x gt x fun y gt y 不是一个语法值 同时它
  • Google Apps 表单脚本中的动态选择选项

    I have 这个表格 https docs google com forms d 1wVvo rabq xxXTnWVRDBIwmRCKOA09QAtbNfbRWEG6Y viewform 如果您看到列表项目 学生姓名和成绩正在从 Goo
  • React-virtualized InfiniteLoader/List - 使用 AJAX 的工作示例

    我正在做一个 React Redux 项目 需要实现一个虚拟化 无限加载列表 react virtualized似乎打算完成这项工作 但即使在阅读了所有可用文档并阅读了许多 StackOverflow 帖子之后 我仍无法使其工作或找到有关组