javascript - 无限列表和分页公式
问题描述
我在 react-native 中完成了一些无限分页。每次当用户到达页面末尾时,新数据就会开始从服务器获取。
有一些参数应该与请求一起发送以获取正确的数据。
const data = { limit, offset };
limit
变量确定需要加载多少项目。
offset
表示从数据库中的哪一点需要查询它们
所以简单地说这就是页面的样子
第 1 页:
const limit = 10; // get 10 items
const offset = 0; // start point
第2页:
const limit = 20; // get 20 items
const offset = 10;
第 3 页:
const limit = 30; // get 30 items
const offset = 30;
第 4 页:
const limit = 40; // get 40 items
const offset = 60;
第 5 页:
const limit = 50; // get 50 items
const offset = 100;
等等。
这就是我现在在我的代码中得到错误结果的样子。
const initialValue = 10;
const limit = initialValue * config.page;
const offset = initialValue * (config.page - 1);
达到预期结果的最佳方法是什么?
解决方案
你还没有描述你得到什么“不正确的结果”,但它看起来是一个相当简单的错误。
你提到:
limit
变量确定需要加载多少项目。
这是一种常见的做法。 limit
基本上是页面大小,说“给我 X 项”。通常limit
会保持不变,只会offset
被计算。但是,您的代码会不断增加限制:
const limit = 10; // get 10 items
...
const limit = 20; // get 20 items
...
const limit = 30; // get 30 items
...
const limit = 40; // get 40 items
...
const limit = 50; // get 50 items
这基本上是在说“我已经滚动浏览了 10 个项目,现在获取接下来的 20 个。我已经滚动浏览了这些项目,再获取 30、40、50”——这不是一种常见的分页方法。
尝试将限制保持在10
并且仅更改偏移量。在这种方法中,您的代码将(伪)说“在之后给我接下来的 10 项offset
”,我怀疑这是您的意图。
推荐阅读
- tomcat8 - 希望将 Java 项目从 tomcat 9 迁移到 tomcat 8.5(降级)
- c# - 如何在不使用实体框架的情况下在 Startup.cs 中添加 DbContext?
- typescript - 从 Uniswap V2 获得合适的售价
- docker - 在 docker 容器中运行 Sqlite
- python - matplotlib 中的 scatter 和 scatter3D 有什么区别?
- html - 换行后跨度占据整个 div
- select - 如何从包含 BigQuery SQL 中转换值的表中创建转换率和货币类型的列表?
- html - 如何在绝对位置上全屏显示输入字段
- json - 尝试从 JSON 响应中的列表中获取值
- reactjs - 带有 NextJS API 的 FormData