Redux
Advanced
Infinite Queries
Implement pagination and infinite scroll patterns with RTK Query.
25 min
2 sections
pagination
infinite-scroll
queries
1
2
01. Use build.infiniteQuery
Section 1 of 2
RTK Query has a first-class infinite query API. Use it when the cache represents multiple pages for one logical list, such as an enterprise ticket queue or audit-event feed.
typescript
type Ticket = {
id: string;
subject: string;
updatedAt: string;
};
type TicketPage = {
items: Ticket[];
nextCursor?: string;
};
export const supportApi = createApi({
reducerPath: 'supportApi',
baseQuery: fetchBaseQuery({ baseUrl: '/api' }),
endpoints: (builder) => ({
getTicketQueue: builder.infiniteQuery<
TicketPage,
{ orgId: string; queueId: string },
string | undefined
>({
infiniteQueryOptions: {
initialPageParam: undefined,
getNextPageParam: (lastPage) => lastPage.nextCursor,
},
query({ queryArg, pageParam }) {
const params = new URLSearchParams({
orgId: queryArg.orgId,
queueId: queryArg.queueId,
});
if (pageParam) params.set('cursor', pageParam);
return `/tickets?${params.toString()}`;
},
}),
}),
});Back to Course