reactjs - 无限查询支持如何响应偏移量和限制
问题描述
我尝试在 react-query和react-virtual中使用 Infinite Queries 在我的 react.js 项目中实现无限滚动。但是无限查询支持光标和页面。并且页面不支持我的 API,它在元数据中有一个限制、偏移量和 totalCount,如下所示
meta: { limit: 100, offset: 0, total: 1000}
无限查询是否支持限制和偏移?
我遵循了一些链接。
https://codesandbox.io/s/github/tannerlinsley/react-virtual/tree/master/examples/infinite-scroll
https://react-query.tanstack.com/docs/guides/infinite-queries
解决方案
infiniteQueries
并不真正关心您的后端如何将“光标”传递到下一页,重要的是后端提供了一些东西。
基本上,从返回的任何内容都getNextPageParam
将作为pageParam
. 这是一个可能适合您的用例的示例:
const { data } = useInfiniteQuery(
'key',
({ pageParam }) => axios.get(myUrl + '?offset=' + pageParam?.offset ?? 0),
{
getNextPageParam: (lastPage) => lastPage?.meta
}
)
“页面”的概念仅仅是您的后端为单次获取返回的内容。所以在这里,在第一次获取时(对于第 0 页),我们没有 pageParam,所以我们用offset: 0
. 然后,我们用它来获取,后端返回第一组数据(一个页面),我们提取它的元信息(偏移量 = 20 或其他)。
如果您调用fetchNextPage()
,将使用该元信息调用 queryFn ,因此下一次 fetch 会执行?offset=20
。后端提供偏移量:40 作为元和无穷大继续。
希望能解释它:)
推荐阅读
- azure-cosmosdb - 在 WHERE 条件下使用日期时间过滤器进行 Cosmos db sql api 查询
- c# - 如何在功能应用中测试功能级别授权以进行本地开发?
- node.js - 如何在 Vue i18n 中进行语言切换
- excel - 在具有不同权重的两组之间分配数字
- sas - 有没有办法在 SAS 评论周围创建一个星号框?
- auth0 - 即使删除后,相同的 gmail 帐户在 Auth0 中也具有相同的用户 ID
- reactjs - 为什么在 React 的 componentDidMount 中订阅了浏览器 api 事件?
- javascript - 如何使用 Express 更改 MongoDB 中的嵌套属性?
- pdf - iText7 / iText7.pdfhtml - 从 HTML 生成可访问的标记 PDF 导致不正确的选项卡顺序
- linux - 我们如何在剧本中使用编码值并在ansible剧本中需要时对其进行解码?