Javascript 无限列表与分页公式

Javascript 无限列表与分页公式,javascript,reactjs,react-native,math,Javascript,Reactjs,React Native,Math,我在react native中进行了一些无限分页。 每当用户到达页面末尾时,新数据就会开始从服务器获取 有些参数应该随请求一起发送,以获取正确的数据 const data = { limit, offset }; limit变量决定需要加载多少项。 offset表示需要从数据库中的哪个点查询它们 简单地说,这就是页面的外观 第1页: const limit = 10; // get 10 items const offset = 0; // start point 第2页: const l

我在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);

实现所需结果的最佳方法是什么?

您没有描述您得到的“错误结果”,但它看起来像一个相当简单的bug

你提到:

limit
变量确定需要加载多少项

这是一种常见的方法
limit
基本上是页面大小,表示“获取X个项目”。正常情况下,
限制
将保持不变,只计算
偏移量
。但是,您的代码会不断增加限制:

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个项目”,我怀疑这是你的意图。

是的,但是
限制
应该随着每页
限制
x
页面
而增加,这就是问题所在。你认为有什么方法可以让它像这样工作吗?只有当你想让下一组比上一组有更多的项目,但这是一个非常奇怪的方法。您可能需要休息一下,以理清思路。不,Constantine,在分页期间,不应更改限制,除非在用户交互时更改他们希望看到的限制。正如STW所指出的,您的限制应该保持不变,这样当您更改偏移量时,您将检索到一组不同的结果。这是一个有这种想法的同步项目,我还发现它有问题,尤其是当页面较高时,因此可能最好将该行为更改为常规限制数。不应根据
初始值计算偏移量。偏移量需要由限制和当前分页索引确定。限制不应该像现在这样波动。它应该只在用户交互时更改。是的,我明白了,但我很感兴趣,如果可能的话,可以用一些方法来获得结果,因为我在这里停留了几个小时,试图让它工作。