Defined in: packages/query-core/src/infiniteQueryObserver.ts:40
An InfiniteQueryObserver extends QueryObserver to observe and switch between infinite queries. It augments the base QueryObserverResult with infinite-query-specific fields and methods, such as hasNextPage and fetchNextPage, and is the primitive that framework adapters (e.g. useInfiniteQuery) build their hooks on top of.
const observer = new InfiniteQueryObserver(queryClient, {
queryKey: ['projects'],
queryFn: ({ pageParam }) => fetchProjects(pageParam),
initialPageParam: 0,
getNextPageParam: (lastPage) => lastPage.nextCursor,
})
const unsubscribe = observer.subscribe((result) => console.log(result))TQueryFnData = unknown
TError = DefaultError
TData = InfiniteData<TQueryFnData>
TQueryKey extends QueryKey = QueryKey
TPageParam = unknown
new InfiniteQueryObserver<TQueryFnData, TError, TData, TQueryKey, TPageParam>(client: QueryClient, options: InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): InfiniteQueryObserver<TQueryFnData, TError, TData, TQueryKey, TPageParam>;Defined in: packages/query-core/src/infiniteQueryObserver.ts:82
InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>
InfiniteQueryObserver<TQueryFnData, TError, TData, TQueryKey, TPageParam>
getCurrentResult: ReplaceReturnType<() => QueryObserverResult<TData, TError>, InfiniteQueryObserverResult<TData, TError>>;Defined in: packages/query-core/src/infiniteQueryObserver.ts:59
Returns the most recently computed QueryObserverResult for the observed query. This is a point-in-time read; to be notified of updates as they happen, subscribe to the observer instead (its inherited subscribe method).
The current result.
const result = observer.getCurrentResult()
console.log(result.status, result.data)QueryObserver.getCurrentResultoptions: QueryObserverOptions<TQueryFnData, TError, TData, InfiniteData<TQueryFnData, TPageParam>, TQueryKey>;Defined in: packages/query-core/src/queryObserver.ts:88
subscribe: (listener: InfiniteQueryObserverListener) => () => void;Defined in: packages/query-core/src/infiniteQueryObserver.ts:54
Registers a listener to be called on every update this object notifies about. Returns a function that removes the listener again — call it to stop listening. The base class never drops a listener on its own, though some subclasses clear all of theirs in destroy().
InfiniteQueryObserverListener
Called on each update, with whatever the subclass passes to its subscribers.
A function that removes the listener.
(): void;void
const unsubscribe = subscribable.subscribe(() => {
// react to the update
})
unsubscribe()QueryObserver.subscribedestroy(): void;Defined in: packages/query-core/src/queryObserver.ts:162
Stops observing the current query: clears all listeners, cancels the stale and refetch-interval timers, and removes this observer from the query it was observing.
void
fetchNextPage(options?: FetchNextPageOptions): Promise<InfiniteQueryObserverResult<TData, TError>>;Defined in: packages/query-core/src/infiniteQueryObserver.ts:165
Fetches the next page of the infinite query and returns a promise that resolves with the resulting InfiniteQueryObserverResult. The page param used for the fetch is determined by getNextPageParam, which receives the current pages/page params and whose result also determines hasNextPage.
Set cancelRefetch to false to ignore the call while a fetch is running, and throwOnError to true to reject when the fetch fails.
Promise<InfiniteQueryObserverResult<TData, TError>>
A promise that resolves with the result after the next page is fetched. With cancelRefetch: false, a running fetch is reused instead, so the next page may not be fetched.
const { hasNextPage } = observer.getCurrentResult()
if (hasNextPage) {
await observer.fetchNextPage()
}InfiniteQueryObserver#fetchPreviousPage
fetchOptimistic(options: QueryObserverOptions<TQueryFnData, TError, TData, InfiniteData<TQueryFnData, TPageParam>, TQueryKey>): Promise<QueryObserverResult<TData, TError>>;Defined in: packages/query-core/src/queryObserver.ts:407
Fetches a query defined by the given options without affecting this observer's own tracked query or result, and returns a promise that resolves with the QueryObserverResult for that fetch. This is useful for prefetching data that another observer (e.g. a query about to be navigated to) will need, ahead of time.
QueryObserverOptions<TQueryFnData, TError, TData, InfiniteData<TQueryFnData, TPageParam>, TQueryKey>
The observer options of the query to fetch.
Promise<QueryObserverResult<TData, TError>>
A promise that resolves with the result for the fetched query.
const result = await observer.fetchOptimistic({
queryKey: ['posts', 2],
queryFn: () => fetchPost(2),
})
console.log(result.data)fetchPreviousPage(options?: FetchPreviousPageOptions): Promise<InfiniteQueryObserverResult<TData, TError>>;Defined in: packages/query-core/src/infiniteQueryObserver.ts:196
Fetches the previous page of the infinite query and returns a promise that resolves with the resulting InfiniteQueryObserverResult. The page param used for the fetch is determined by getPreviousPageParam, which receives the current pages/page params and whose result also determines hasPreviousPage.
Set cancelRefetch to false to ignore the call while a fetch is running, and throwOnError to true to reject when the fetch fails.
Promise<InfiniteQueryObserverResult<TData, TError>>
A promise that resolves with the result after the previous page is fetched. With cancelRefetch: false, a running fetch is reused instead, so the previous page may not be fetched.
const { hasPreviousPage } = observer.getCurrentResult()
if (hasPreviousPage) {
await observer.fetchPreviousPage()
}InfiniteQueryObserver#fetchNextPage
getCurrentQuery(): Query<TQueryFnData, TError, InfiniteData<TQueryFnData, TPageParam>, TQueryKey>;Defined in: packages/query-core/src/queryObserver.ts:366
Returns the Query instance this observer is currently observing.
Query<TQueryFnData, TError, InfiniteData<TQueryFnData, TPageParam>, TQueryKey>
The observed query.
getOptimisticResult(options: DefaultedInfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): InfiniteQueryObserverResult<TData, TError>;Defined in: packages/query-core/src/infiniteQueryObserver.ts:129
The infinite-query counterpart of QueryObserver#getOptimisticResult, marking the options as an infinite query before delegating to it. Called by framework adapters (e.g. useInfiniteQuery) ahead of subscribing, to compute the current InfiniteQueryObserverResult synchronously.
DefaultedInfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>
The defaulted infinite query observer options to compute the result for.
InfiniteQueryObserverResult<TData, TError>
The result for the given options.
QueryObserver.getOptimisticResult
hasListeners(): boolean;Defined in: packages/query-core/src/subscribable.ts:43
Returns true while at least one listener is registered, false once they have all unsubscribed.
boolean
true if at least one listener is registered.
refetch(options: RefetchOptions): Promise<QueryObserverResult<TData, TError>>;Defined in: packages/query-core/src/queryObserver.ts:382
Refetches the observed query and returns a promise that resolves with the resulting QueryObserverResult.
RefetchOptions = {}
Set cancelRefetch to false to keep a running fetch instead of cancelling it, and throwOnError to true to reject when the refetch fails.
Promise<QueryObserverResult<TData, TError>>
A promise that resolves with the result after the refetch.
const result = await observer.refetch({ cancelRefetch: false })
console.log(result.data)setOptions(options: InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): void;Defined in: packages/query-core/src/infiniteQueryObserver.ts:108
Updates the observer's options. Behaves the same as QueryObserver.setOptions, additionally marking the options as belonging to an infinite query before delegating to the base implementation.
InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>
The new infinite query observer options.
void
shouldFetchOnReconnect(): boolean;Defined in: packages/query-core/src/queryObserver.ts:135
Returns whether the observed query is currently stale and configured (via the refetchOnReconnect option) to refetch when the network reconnects.
boolean
true if the observer should refetch the query on reconnect.
QueryObserver.shouldFetchOnReconnect
shouldFetchOnWindowFocus(): boolean;Defined in: packages/query-core/src/queryObserver.ts:149
Returns whether the observed query is currently stale and configured (via the refetchOnWindowFocus option) to refetch when the window regains focus.
boolean
true if the observer should refetch the query on window focus.
QueryObserver.shouldFetchOnWindowFocus
trackProp(key:
| "error"
| "data"
| "isError"
| "isPending"
| "isLoading"
| "isLoadingError"
| "isRefetchError"
| "isSuccess"
| "isPlaceholderData"
| "status"
| "dataUpdatedAt"
| "errorUpdatedAt"
| "failureCount"
| "failureReason"
| "errorUpdateCount"
| "isFetched"
| "isFetchedAfterMount"
| "isFetching"
| "isInitialLoading"
| "isPaused"
| "isRefetching"
| "isStale"
| "isEnabled"
| "refetch"
| "fetchStatus"): void;Defined in: packages/query-core/src/queryObserver.ts:358
Records that the given QueryObserverResult property was read, so a subsequent update only notifies this observer if a tracked property actually changed. Normally called indirectly via QueryObserver#trackResult's proxy; exposed directly for adapters that track property access themselves (e.g. through their own reactivity system) instead of via the proxy.
The name of the property that was read.
"error" | "data" | "isError" | "isPending" | "isLoading" | "isLoadingError" | "isRefetchError" | "isSuccess" | "isPlaceholderData" | "status" | "dataUpdatedAt" | "errorUpdatedAt" | "failureCount" | "failureReason" | "errorUpdateCount" | "isFetched" | "isFetchedAfterMount" | "isFetching" | "isInitialLoading" | "isPaused" | "isRefetching" | "isStale" | "isEnabled" | "refetch" | "fetchStatus"
void
trackResult(result: QueryObserverResult<TData, TError>, onPropTracked?: (key:
| "error"
| "data"
| "isError"
| "isPending"
| "isLoading"
| "isLoadingError"
| "isRefetchError"
| "isSuccess"
| "isPlaceholderData"
| "status"
| "dataUpdatedAt"
| "errorUpdatedAt"
| "failureCount"
| "failureReason"
| "errorUpdateCount"
| "isFetched"
| "isFetchedAfterMount"
| "isFetching"
| "isInitialLoading"
| "isPaused"
| "isRefetching"
| "isStale"
| "isEnabled"
| "refetch"
| "fetchStatus") => void): QueryObserverResult<TData, TError>;Defined in: packages/query-core/src/queryObserver.ts:338
Wraps a QueryObserverResult in a Proxy that records which properties are read, via QueryObserver#trackProp (and an optional onPropTracked callback). Used by framework adapters when notifyOnChangeProps is not set, to implement its default "only re-render on properties you actually read" behavior.
QueryObserverResult<TData, TError>
The result to wrap.
(key: | "error" | "data" | "isError" | "isPending" | "isLoading" | "isLoadingError" | "isRefetchError" | "isSuccess" | "isPlaceholderData" | "status" | "dataUpdatedAt" | "errorUpdatedAt" | "failureCount" | "failureReason" | "errorUpdateCount" | "isFetched" | "isFetchedAfterMount" | "isFetching" | "isInitialLoading" | "isPaused" | "isRefetching" | "isStale" | "isEnabled" | "refetch" | "fetchStatus") => void
Called with the name of each property that is read.
QueryObserverResult<TData, TError>
A proxy of result that tracks property reads.
updateResult(): void;Defined in: packages/query-core/src/queryObserver.ts:745
Recomputes and stores the current result from the current query/options, notifying listeners if it changed. Framework adapters call this right after subscribing to make sure no query update was missed in the gap between creating the observer and subscribing to it.
void