无offset支持时,如何用page和perPage实现API分页加载?
用page和perPage实现无offset的增量加载(单次请求方案)
核心思路是通过计算目标条目范围,调整page和perPage参数让单次API请求覆盖所需的新条目,再在前端过滤掉已加载的内容。以下针对你的场景(初始8条,每次加载10条新条目)给出具体实现:
先明确API分页规则(关键前提)
首先要确认API的分页逻辑,常见两种:
- 页码式分页:
page=N表示第N页,每页perPage条,第N页的条目范围是(N-1)*perPage + 1到N*perPage(例:perPage=10时,page=1返回1-10条,page=2返回11-20条) - 偏移式分页(page伪装offset):
page=N表示跳过N*perPage条,返回接下来的perPage条(例:perPage=10时,page=0返回1-10条,page=1返回11-20条)
针对你的场景的具体实现
场景1:API为页码式分页
- 第一次加载(需获取9-18条):
目标条目覆盖第1页(1-10)和第2页(11-20)的部分内容。直接请求page=1&perPage=18,API会返回1-18条完整数据,前端过滤掉前8条已加载内容,即可得到9-18条。 - 第二次加载(需获取19-28条):
此时已加载总条目数为18,请求page=1&perPage=28,API返回1-28条,过滤前18条后得到19-28条。 - 后续加载:
每次计算当前已加载总条目数loadedCount,目标结束位置为loadedCount + 10,请求page=1&perPage=loadedCount+10,过滤前loadedCount条即可。
场景2:API为偏移式分页
逻辑和页码式类似,只是请求参数调整为page=0&perPage=loadedCount+10,API返回从第1条到第loadedCount+10条的内容,前端过滤前loadedCount条,直接取后面10条新内容。
注意事项
- 如果API对
perPage有最大值限制(比如最多允许50条),当loadedCount+10超过这个限制时,该方案无法单次完成请求,此时只能拆分请求或和后端协商调整API限制。 - 前端需准确记录已加载的总条目数,避免重复过滤或漏加载。
内容的提问来源于stack exchange,提问作者user2526590
相关产品推荐
相关产品推荐

