Pagination 如何在React Admin中处理基于光标的分页?

Pagination 如何在React Admin中处理基于光标的分页?,pagination,react-admin,Pagination,React Admin,我的API提供基于光标的分页而不是偏移限制分页,因此很难与React Admin为GET_LIST和GET_MANY_REFERENCE提供的page:{int}和perPage:{int}配置相匹配 许多具有快速移动数据的API使用基于光标的分页,例如 最简单的基于光标的分页表示列表响应包括(在响应正文或标题中)不透明的光标,这些光标是上一页末尾和下一页开头的“书签”。它可能包括或不包括响应中每个资源的游标,也可能不包括第一个和最后一个可用页面的持久游标。基于游标的分页API也可能无法提供与所

我的API提供基于光标的分页而不是偏移限制分页,因此很难与React Admin为
GET_LIST
GET_MANY_REFERENCE
提供的
page:{int}
perPage:{int}
配置相匹配

许多具有快速移动数据的API使用基于光标的分页,例如

最简单的基于光标的分页表示列表响应包括(在响应正文或标题中)不透明的光标,这些光标是上一页末尾和下一页开头的“书签”。它可能包括或不包括响应中每个资源的游标,也可能不包括第一个和最后一个可用页面的持久游标。基于游标的分页API也可能无法提供与所提供的筛选器匹配的资源的有意义的“总计数”,正如react admin
GET_列表
GET_MANY_REFERENCE
响应中当前坚持的那样

在React Admin issue tracker(和)和Stack Overflow(堆栈溢出)上似乎也提出了类似的问题,但所有的答案似乎都是非常脆弱的解决方法

具体来说,我的API支持的请求/响应习惯用法,初始请求可能如下所示:

GEThttp://example.com/api/resources?&paging.limit=10

响应最多包括请求的10个资源,以及标记此页面开始和结束的游标:

X-Paging-Since: <since-cursor>
X-Paging-Until: <until-cursor>

[ {...}, {...}, ... ]
X-Paging-Since:
X-Paging-Until:
[ {...}, {...}, ... ]
上一页是:

GEThttp://example.com/api/resources?&paging.until=

下一页是:

GEThttp://example.com/api/resources?&paging.since=

(在此API中,下一个/上一个(和第一个/最后一个)的完整URL实际上也可以在响应头中找到:
链接:;rel=prev,;rel=next,;rel=first,;rel=last


显然,我的数据提供程序可以将这些标题重新格式化为返回给react admin的数据,但不清楚如何最好地连接到react admin
列表
分页
组件,或
Pagination
组件,将适当的游标/URL传递回数据提供程序,以供下一个请求。

在初始
GET_LIST
之后,捕获
dataProvider
中的自定义头,将分页参数传递给数据响应。使用中所述的自定义缩减器在redux中存储分页位置。在下一个GET_LIST调用中,从redux中获取分页结果,并将其格式化为您的API。这不是脆弱的,因为它使用react admin现有的redux系统,将状态存储在应该存储的位置stored@HarleyAlexander-当您说“在下一次GET_LIST调用中,从redux获取分页结果并将其格式化为API”时,您建议如何访问redux存储。我看不出如何在自定义buildQuery中实现这一点function@cubabit我也有同样的问题。我能够通过一个定制的缩减器更新分页结果,即
if(type==CRUD\u GET\u LIST\u SUCCESS){return payload.lastid}或者if(type==CRUD\u GET\u LIST){if(previousState!==null){payload.pagination['lastid']=previousState}
。我的问题是,前面的页面没有缓存。例如,当我单击prev时,会对getList进行另一个调用,该调用最后使用了lastid和pages forward的前一个函数。我会继续调查和更新。