下面是一个钩子,它返回基于页面的数据
const {
data,
isFetching,
isLoading,
isError,
} = useGetResourceQuery(page, perPage );
这是API
export const api = createApi({
baseQuery: fetchBaseQuery({
baseUrl: "http://localhost:3001",
}),
tagTypes: ["resource"],
endpoints: (build) => ({
getResource: build.query({
query: (page = 1, perPage = 20) =>
`resource?spage=${page}&limit=${perPage}`,
}),
}),
});
export const {useGetResourceQuery} = api
是否有任何方法可以提取所有查询的状态?我想实现基于滚动的分页(无限滚动)我们是否需要更新中间件?或者是否有任何方法可以访问状态并将其作为函数公开如上所述,我查看了文档,但没有找到解决方案
我可以使用本地状态并将它们连接起来,但想知道是否可以使用RTK
谢谢
2条答案
按热度按时间0lvr5msh1#
我认为大多数实现都把“无限滚动”的问题复杂化了很多。你可以退一步考虑一下你真正需要什么来实现这个目标:
因为我们很懒,不想跟踪我们滚动到的方向,所以假设
我们还假设查询返回如下响应
因此,假设一个页面足够大,可以包含一个屏幕的所有数据,我们将得到如下结果
由于组件未引用的请求将在存储区中停留60秒,因此用户可以快速向上滚动许多页而无需进一步请求-而且,可能永远不会再次滚动到的数据将该高速缓存中删除,并在必要时重新获取。
wmvff8tz2#
您可以使用
queryFn
来组合您已经拥有的缓存结果。请记住使用invalidation
来获取更新的状态。在下面的代码中,第一个
queryFn
只是一个伪API,第二个端点是您正在寻找的解决方案: