const {fetchNextPage,fetchPreviousPage,hasNextPage,hasPreviousPage,isFetchingNextPage,isFetchingPreviousPage,...result} = useInfiniteQuery(queryKey, ({ pageParam = 1 }) => fetchPage(pageParam), {...options,getNextPageParam: (lastPage, allPages) => lastPage.nextCursor,getPreviousPageParam: (firstPage, allPages) => firstPage.prevCursor,})
Options
The options for useInfiniteQuery
are identical to the useQuery
hook with the addition of the following:
queryFn: (context: QueryFunctionContext) => Promise<TData>
defaultQueryFn
QueryFunctionContext
object with the following variables:queryKey: EnsuredQueryKey
: the queryKey, guaranteed to be an ArraypageParam: unknown | undefined
pageParam
if needed for use in the props below.getNextPageParam: (lastPage, allPages) => unknown | undefined
undefined
to indicate there is no next page available.getPreviousPageParam: (firstPage, allPages) => unknown | undefined
undefined
to indicate there is no previous page available.Returns
The returned properties for useInfiniteQuery
are identical to the useQuery
hook, with the addition of the following:
data.pages: TData[]
data.pageParams: unknown[]
isFetchingNextPage: boolean
true
while fetching the next page with fetchNextPage
.isFetchingPreviousPage: boolean
true
while fetching the previous page with fetchPreviousPage
.fetchNextPage: (options?: FetchNextPageOptions) => Promise<UseInfiniteQueryResult>
options.pageParam: unknown
allows you to manually specify a page param instead of using getNextPageParam
.options.cancelRefetch: boolean
if set to true
, calling fetchNextPage
repeatedly will invoke fetchPage
every time, whether the previous
invocation has resolved or not. Also, the result from previous invocations will be ignored. If set to false
, calling fetchNextPage
repeatedly won't have any effect until the first invocation has resolved. Default is true
.fetchPreviousPage: (options?: FetchPreviousPageOptions) => Promise<UseInfiniteQueryResult>
options.pageParam: unknown
allows you to manually specify a page param instead of using getPreviousPageParam
.options.cancelRefetch: boolean
same as for fetchNextPage
.hasNextPage: boolean
true
if there is a next page to be fetched (known via the getNextPageParam
option).hasPreviousPage: boolean
true
if there is a previous page to be fetched (known via the getPreviousPageParam
option).The best JavaScript newsletter! Delivered every Monday to over 76,000 devs.