| id | QueryClient |
|---|---|
| title | QueryClient |
Defined in: packages/query-core/src/queryClient.ts:79
QueryClient is used to interact with a cache of queries and mutations. It owns a
QueryCache and a MutationCache (creating default ones if none are passed in) and holds
the default options that are applied to queries and mutations created through it.
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: Infinity,
},
},
})
await queryClient.query({ queryKey: ['posts'], queryFn: fetchPosts })new QueryClient(config: QueryClientConfig): QueryClient;Defined in: packages/query-core/src/queryClient.ts:89
QueryClientConfig = {}
QueryClient
cancelQueries<TTaggedQueryKey>(filters?: QueryFilters<TTaggedQueryKey>, cancelOptions?: CancelOptions): Promise<void>;Defined in: packages/query-core/src/queryClient.ts:434
Cancels outgoing fetches for queries matching the given filters. Most useful when performing
optimistic updates, since any outgoing refetch that resolves afterwards would otherwise
overwrite the optimistic update. By default (revert: true), a cancelled query's data is
reverted to its state before the outgoing fetch started.
The returned promise never rejects, even if individual cancellations fail.
TTaggedQueryKey extends readonly unknown[] = readonly unknown[]
QueryFilters<TTaggedQueryKey>
CancelOptions = {}
Promise<void>
await queryClient.cancelQueries({ queryKey: ['posts'], exact: true })clear(): void;Defined in: packages/query-core/src/queryClient.ts:1089
Clears both the query cache and the mutation cache this client is connected to.
void
import { QueryClient } from '@tanstack/query-core'
const queryClient = new QueryClient()
queryClient.clear()defaultMutationOptions<T>(options?: T): T;Defined in: packages/query-core/src/queryClient.ts:1063
The mutation counterpart of QueryClient#defaultQueryOptions. Called by framework
adapters (e.g. inside useMutation) to merge queryClient.setMutationDefaults for the
given mutationKey, then the client's defaultOptions.mutations, then the caller's options
on top. A no-op if the options are already defaulted (_defaulted: true).
T extends MutationOptions<any, any, any, any>
T
T
defaultQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>(options:
| QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>
| DefaultedQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>): DefaultedQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>;Defined in: packages/query-core/src/queryClient.ts:976
Called by framework adapters (e.g. inside useQuery) to resolve the options passed by the
caller into their final, defaulted form: merging queryClient.setQueryDefaults for the
given queryKey, then the client's own defaultOptions.queries, then the caller's options
on top. A no-op if the options are already defaulted (_defaulted: true).
TQueryFnData = unknown
TError = Error
TData = TQueryFnData
TQueryData = TQueryFnData
TQueryKey extends readonly unknown[] = readonly unknown[]
TPageParam = never
QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam> | DefaultedQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>
DefaultedQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>
ensureInfiniteQueryData<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options: EnsureInfiniteQueryDataOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): Promise<InfiniteData<TData, TPageParam>>;Defined in: packages/query-core/src/queryClient.ts:740
TQueryFnData
TError = Error
TData = TQueryFnData
TQueryKey extends readonly unknown[] = readonly unknown[]
TPageParam = unknown
EnsureInfiniteQueryDataOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>
Promise<InfiniteData<TData, TPageParam>>
Use queryClient.infiniteQuery({ ...options, staleTime: 'static' }) instead. This method will be removed in the next major version.
ensureQueryData<TQueryFnData, TError, TData, TQueryKey>(options: EnsureQueryDataOptions<TQueryFnData, TError, TData, TQueryKey>): Promise<TData>;Defined in: packages/query-core/src/queryClient.ts:197
TQueryFnData
TError = Error
TData = TQueryFnData
TQueryKey extends readonly unknown[] = readonly unknown[]
EnsureQueryDataOptions<TQueryFnData, TError, TData, TQueryKey>
Promise<TData>
Use queryClient.query({ ...options, staleTime: 'static' }) instead. This method will be removed in the next major version.
fetchInfiniteQuery<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): Promise<InfiniteData<TData, TPageParam>>;Defined in: packages/query-core/src/queryClient.ts:695
TQueryFnData
TError = Error
TData = TQueryFnData
TQueryKey extends readonly unknown[] = readonly unknown[]
TPageParam = unknown
FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>
Promise<InfiniteData<TData, TPageParam>>
Use queryClient.infiniteQuery(options) instead. This method will be removed in the next major version.
fetchQuery<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): Promise<TData>;Defined in: packages/query-core/src/queryClient.ts:602
TQueryFnData
TError = Error
TData = TQueryFnData
TQueryKey extends readonly unknown[] = readonly unknown[]
TPageParam = never
FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>
Promise<TData>
Use queryClient.query(options) instead. This method will be removed in the next major version.
getDefaultOptions(): DefaultOptions;Defined in: packages/query-core/src/queryClient.ts:824
Returns the default options that were set when creating the client, or via QueryClient#setDefaultOptions.
import { QueryClient } from '@tanstack/query-core'
const queryClient = new QueryClient()
const defaultOptions = queryClient.getDefaultOptions()getMutationCache(): MutationCache;Defined in: packages/query-core/src/queryClient.ts:808
Returns the mutation cache this client is connected to.
import { QueryClient } from '@tanstack/query-core'
const queryClient = new QueryClient()
const mutationCache = queryClient.getMutationCache()
const mutations = mutationCache.findAll({ status: 'pending' })getMutationDefaults(mutationKey: readonly unknown[]): OmitKeyof<MutationObserverOptions<any, any, any, any>, "mutationKey">;Defined in: packages/query-core/src/queryClient.ts:951
Returns the default options registered for mutations whose mutation key partially matches
the given mutationKey, via QueryClient#setMutationDefaults. If multiple registered
defaults match, they are merged together in registration order.
readonly unknown[]
OmitKeyof<MutationObserverOptions<any, any, any, any>, "mutationKey">
const defaultOptions = queryClient.getMutationDefaults(['addPost'])getQueriesData<TQueryFnData, TQueryFilters>(filters: TQueryFilters): [readonly unknown[], TQueryFnData | undefined][];Defined in: packages/query-core/src/queryClient.ts:242
Imperative (non-reactive) way to retrieve the cached data of multiple queries at once. Only queries matching the given filters are returned; if none match, an empty array is returned.
Because the matched queries can hold data of different shapes (e.g. a broad filter can match
queries with unrelated data types), the TQueryFnData generic defaults to unknown rather
than being inferred. Passing a more specific type is a convenience for call sites that know
every matched query holds the same shape — it is not checked against the actual cache
contents.
TQueryFnData = unknown
TQueryFilters extends QueryFilters<any> = QueryFilters<readonly unknown[]>
TQueryFilters
[readonly unknown[], TQueryFnData | undefined][]
const data = queryClient.getQueriesData({ queryKey: ['posts'] })getQueryCache(): QueryCache;Defined in: packages/query-core/src/queryClient.ts:792
Returns the query cache this client is connected to.
import { QueryClient } from '@tanstack/query-core'
const queryClient = new QueryClient()
const queryCache = queryClient.getQueryCache()
const queries = queryCache.findAll({ queryKey: ['posts'] })getQueryData<TQueryFnData, TTaggedQueryKey, TInferredQueryFnData>(queryKey: TTaggedQueryKey): TInferredQueryFnData | undefined;Defined in: packages/query-core/src/queryClient.ts:183
Imperative (non-reactive) way to retrieve data for a QueryKey. Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.
Hint: Do not use this function inside a component, because it won't receive updates.
Use useQuery to create a QueryObserver that subscribes to changes.
TQueryFnData = unknown
TTaggedQueryKey extends readonly unknown[] = readonly unknown[]
TInferredQueryFnData = InferDataFromTag<TQueryFnData, TTaggedQueryKey>
TTaggedQueryKey
TInferredQueryFnData | undefined
getQueryDefaults(queryKey: readonly unknown[]): OmitKeyof<QueryObserverOptions<any, any, any, any, any>, "queryKey">;Defined in: packages/query-core/src/queryClient.ts:894
Returns the default options registered for queries whose query key partially matches the
given queryKey, via QueryClient#setQueryDefaults. If multiple registered defaults
match, they are merged together in registration order.
readonly unknown[]
OmitKeyof<QueryObserverOptions<any, any, any, any, any>, "queryKey">
const defaultOptions = queryClient.getQueryDefaults(['posts'])getQueryState<TQueryFnData, TError, TTaggedQueryKey, TInferredQueryFnData, TInferredError>(queryKey: TTaggedQueryKey):
| QueryState<TInferredQueryFnData, TInferredError>
| undefined;Defined in: packages/query-core/src/queryClient.ts:352
Imperative (non-reactive) way to retrieve an existing query's state. If the query does not
exist, undefined is returned.
TQueryFnData = unknown
TError = Error
TTaggedQueryKey extends readonly unknown[] = readonly unknown[]
TInferredQueryFnData = InferDataFromTag<TQueryFnData, TTaggedQueryKey>
TInferredError = InferErrorFromTag<TError, TTaggedQueryKey>
TTaggedQueryKey
| QueryState<TInferredQueryFnData, TInferredError>
| undefined
const state = queryClient.getQueryState(['posts'])
console.log(state?.dataUpdatedAt)infiniteQuery<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options: InfiniteQueryExecuteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): Promise<TData[] extends InfiniteData<TQueryFnData, unknown>[] ? InfiniteData<TQueryFnData, TPageParam> : TData>;Defined in: packages/query-core/src/queryClient.ts:669
Asynchronous method to fetch and cache an infinite query, resolving with an InfiniteData object or throwing with the error.
Behaves like QueryClient#query, accepting the same options (minus
initialPageParam), plus the required initialPageParam, and an optional pages /
getNextPageParam pair used to refetch a fixed number of pages from the start.
This method replaces the deprecated fetchInfiniteQuery, and — combined with
{ staleTime: 'static' } — the deprecated ensureInfiniteQueryData.
TQueryFnData
TError = Error
TData = InfiniteData<TQueryFnData, unknown>
TQueryKey extends readonly unknown[] = readonly unknown[]
TPageParam = unknown
InfiniteQueryExecuteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>
Promise<TData[] extends InfiniteData<TQueryFnData, unknown>[] ? InfiniteData<TQueryFnData, TPageParam> : TData>
try {
const data = await queryClient.infiniteQuery({ queryKey, queryFn, initialPageParam: 0 })
console.log(data.pages)
} catch (error) {
console.log(error)
}invalidateQueries<TTaggedQueryKey>(filters?: InvalidateQueryFilters<TTaggedQueryKey>, options?: InvalidateOptions): Promise<void>;Defined in: packages/query-core/src/queryClient.ts:462
Marks queries matching the given filters as invalidated. Unlike QueryClient#removeQueries, invalidated queries stay in the cache.
Unless filters.refetchType is 'none', matching queries are then refetched via
QueryClient#refetchQueries, using filters.refetchType if set, otherwise
filters.type, otherwise 'active'.
TTaggedQueryKey extends readonly unknown[] = readonly unknown[]
InvalidateQueryFilters<TTaggedQueryKey>
InvalidateOptions = {}
Promise<void>
await queryClient.invalidateQueries({ queryKey: ['posts'], refetchType: 'active' })isFetching<TQueryFilters>(filters?: TQueryFilters): number;Defined in: packages/query-core/src/queryClient.ts:150
Returns the number of queries in the cache that are currently fetching, optionally matching a set of filters. This includes background-fetching, loading new pages, and loading more infinite query results.
TQueryFilters extends QueryFilters<any> = QueryFilters<readonly unknown[]>
TQueryFilters
number
if (queryClient.isFetching()) {
console.log('At least one query is fetching!')
}isMutating<TMutationFilters>(filters?: TMutationFilters): number;Defined in: packages/query-core/src/queryClient.ts:168
Returns the number of mutations in the cache that are currently pending, optionally matching a set of filters.
TMutationFilters extends MutationFilters<any, any, unknown, unknown> = MutationFilters<unknown, Error, unknown, unknown>
TMutationFilters
number
if (queryClient.isMutating()) {
console.log('At least one mutation is pending!')
}mount(): void;Defined in: packages/query-core/src/queryClient.ts:104
Called by a framework adapter's QueryClientProvider-equivalent when it mounts, to start
listening for focus/online events and resume paused mutations. Ref-counted via an internal
mount count, so nested or multiple providers sharing the same QueryClient don't tear down
the shared listeners until the last one unmounts.
void
prefetchInfiniteQuery<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): Promise<void>;Defined in: packages/query-core/src/queryClient.ts:718
TQueryFnData
TError = Error
TData = TQueryFnData
TQueryKey extends readonly unknown[] = readonly unknown[]
TPageParam = unknown
FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>
Promise<void>
Use queryClient.infiniteQuery(options) instead. You can swallow errors with .catch(noop). This method will be removed in the next major version.
prefetchQuery<TQueryFnData, TError, TData, TQueryKey>(options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>): Promise<void>;Defined in: packages/query-core/src/queryClient.ts:636
TQueryFnData = unknown
TError = Error
TData = TQueryFnData
TQueryKey extends readonly unknown[] = readonly unknown[]
FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
Promise<void>
Use queryClient.query(options) instead. You can swallow errors with .catch(noop). This method will be removed in the next major version.
query<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>(options: QueryExecuteOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>): Promise<TData>;Defined in: packages/query-core/src/queryClient.ts:556
Asynchronous method to fetch and cache a query, resolving with the data or throwing with the error.
If the query already exists in the cache and its data is not stale (per the given
staleTime), the cached data is returned without fetching. Otherwise, the query is fetched
and the promise resolves once the fetch settles. If a select function is provided, it is
applied to the data in both cases (cached or freshly fetched) before it is returned.
Unlike a reactive observer, retries are disabled by default here (retry: false) unless
explicitly configured, since there is no component to catch a thrown error and retry through
re-render.
The accepted options are QueryObserverOptions minus the fields that only make sense for a
reactive observer — enabled, refetchInterval, refetchIntervalInBackground,
refetchOnWindowFocus, refetchOnReconnect, refetchOnMount, retryOnMount,
notifyOnChangeProps, throwOnError, suspense, and placeholderData are not part of this
method's options.
This method replaces the deprecated fetchQuery, and — combined with
{ staleTime: 'static' } — the deprecated ensureQueryData.
TQueryFnData
TError = Error
TData = TQueryFnData
TQueryData = TQueryFnData
TQueryKey extends readonly unknown[] = readonly unknown[]
TPageParam = never
QueryExecuteOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>
Promise<TData>
try {
const data = await queryClient.query({ queryKey, queryFn, staleTime: 10000 })
} catch (error) {
console.log(error)
}refetchQueries<TTaggedQueryKey>(filters?: RefetchQueryFilters<TTaggedQueryKey>, options?: RefetchOptions): Promise<void>;Defined in: packages/query-core/src/queryClient.ts:499
Refetches queries matching the given filters, regardless of whether they are stale. Without
filters, every query in the cache is refetched. Queries that are disabled, or static (only
have observers with a static staleTime), are never refetched.
By default (cancelRefetch: true), a currently running fetch is cancelled before the new
one starts. The returned promise resolves once all matching queries have settled; it does
not reject on individual query failures unless throwOnError is set.
TTaggedQueryKey extends readonly unknown[] = readonly unknown[]
RefetchQueryFilters<TTaggedQueryKey>
RefetchOptions = {}
Promise<void>
// refetch all active queries partially matching a query key:
await queryClient.refetchQueries({ queryKey: ['posts'], type: 'active' })removeQueries<TTaggedQueryKey>(filters?: QueryFilters<TTaggedQueryKey>): void;Defined in: packages/query-core/src/queryClient.ts:378
Removes queries from the cache that match the given filters. Unlike QueryClient#invalidateQueries or QueryClient#refetchQueries, this removes matching queries from the cache instead of refetching them. Without filters, every query in the cache is removed.
TTaggedQueryKey extends readonly unknown[] = readonly unknown[]
QueryFilters<TTaggedQueryKey>
void
queryClient.removeQueries({ queryKey: ['posts'], exact: true })resetQueries<TTaggedQueryKey>(filters?: QueryFilters<TTaggedQueryKey>, options?: ResetOptions): Promise<void>;Defined in: packages/query-core/src/queryClient.ts:399
Resets queries matching the given filters back to their initial state (e.g. any
initialData), notifying subscribers rather than removing them. Active queries among the
matched set are then refetched, and the returned promise resolves once that refetch settles.
TTaggedQueryKey extends readonly unknown[] = readonly unknown[]
QueryFilters<TTaggedQueryKey>
Promise<void>
await queryClient.resetQueries({ queryKey: ['posts'], exact: true })resumePausedMutations(): Promise<unknown>;Defined in: packages/query-core/src/queryClient.ts:773
Resumes mutations that were paused because there was no network connection. Does nothing (resolving immediately) if the client is currently offline.
Promise<unknown>
import { QueryClient } from '@tanstack/query-core'
const queryClient = new QueryClient()
await queryClient.resumePausedMutations()setDefaultOptions(options: DefaultOptions): void;Defined in: packages/query-core/src/queryClient.ts:845
Dynamically sets the default options for this client, overwriting any previously defined default options.
void
import { QueryClient } from '@tanstack/query-core'
const queryClient = new QueryClient()
queryClient.setDefaultOptions({
queries: {
staleTime: Infinity,
},
})setMutationDefaults<TData, TError, TVariables, TOnMutateResult>(mutationKey: readonly unknown[], options: OmitKeyof<MutationObserverOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">): void;Defined in: packages/query-core/src/queryClient.ts:923
Sets default options for mutations whose mutation key partially matches the given
mutationKey. As with QueryClient#setQueryDefaults, the order of registration
matters when several registered defaults match the same mutation key.
TData = unknown
TError = Error
TVariables = void
TOnMutateResult = unknown
readonly unknown[]
OmitKeyof<MutationObserverOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">
void
QueryClient#getMutationDefaults
queryClient.setMutationDefaults(['addPost'], { mutationFn: addPost })setQueriesData<TQueryFnData, TQueryFilters>(
filters: TQueryFilters,
updater: Updater<NoInfer<TQueryFnData> | undefined, NoInfer<TQueryFnData> | undefined>,
options?: SetDataOptions): [readonly unknown[], TQueryFnData | undefined][];Defined in: packages/query-core/src/queryClient.ts:321
Synchronous way to immediately update the cached data of multiple queries at once, using filters or partial query key matching. Only queries that already exist and match the given filters are updated; no new cache entries are created. Internally this calls QueryClient#setQueryData for each matching query.
TQueryFnData
TQueryFilters extends QueryFilters<any> = QueryFilters<readonly unknown[]>
TQueryFilters
Updater<NoInfer<TQueryFnData> | undefined, NoInfer<TQueryFnData> | undefined>
[readonly unknown[], TQueryFnData | undefined][]
queryClient.setQueriesData({ queryKey: ['posts'] }, (oldPosts) =>
oldPosts ? oldPosts.filter((post) => post.id !== deletedId) : oldPosts,
)setQueryData<TQueryFnData, TTaggedQueryKey, TInferredQueryFnData>(
queryKey: TTaggedQueryKey,
updater: Updater<NoInfer<TInferredQueryFnData> | undefined, NoInfer<TInferredQueryFnData> | undefined>,
options?: SetDataOptions): NoInfer<TInferredQueryFnData> | undefined;Defined in: packages/query-core/src/queryClient.ts:273
Synchronous way to immediately update a query's cached data. If the updater (or the value
passed) resolves to undefined, the cache is left untouched and no query is created;
otherwise, if the query does not exist yet, it will be created. To update multiple queries
at once by partially matching query keys, use QueryClient#setQueriesData instead.
Updates must be performed immutably: do not mutate oldData, or data previously retrieved
via QueryClient#getQueryData, in place.
TQueryFnData = unknown
TTaggedQueryKey extends readonly unknown[] = readonly unknown[]
TInferredQueryFnData = InferDataFromTag<TQueryFnData, TTaggedQueryKey>
TTaggedQueryKey
The query key to set data for.
Updater<NoInfer<TInferredQueryFnData> | undefined, NoInfer<TInferredQueryFnData> | undefined>
Either the new data, or a function that receives the current data (which
may be undefined) and returns the new data.
NoInfer<TInferredQueryFnData> | undefined
queryClient.setQueryData(['posts'], newPosts)
// Or, using an updater function that receives the current data:
queryClient.setQueryData(['posts'], (oldPosts) => [...oldPosts, newPost])setQueryDefaults<TQueryFnData, TError, TData, TQueryData>(queryKey: readonly unknown[], options: Partial<OmitKeyof<QueryObserverOptions<TQueryFnData, TError, TData, TQueryData>, "queryKey">>): void;Defined in: packages/query-core/src/queryClient.ts:864
Sets default options for queries whose query key partially matches the given queryKey.
If several registered query defaults match a given query key, they are merged together in registration order by QueryClient#getQueryDefaults, so register defaults from the most generic key to the least generic one — more specific defaults should be registered after more generic ones so they take precedence.
TQueryFnData = unknown
TError = Error
TData = TQueryFnData
TQueryData = TQueryFnData
readonly unknown[]
Partial<OmitKeyof<QueryObserverOptions<TQueryFnData, TError, TData, TQueryData>, "queryKey">>
void
queryClient.setQueryDefaults(['posts'], { queryFn: fetchPosts })
await queryClient.query({ queryKey: ['posts'] })unmount(): void;Defined in: packages/query-core/src/queryClient.ts:127
The inverse of QueryClient#mount — called by a framework adapter's
QueryClientProvider-equivalent when it unmounts. Only tears down the focus/online
listeners once the mount count returns to 0.
void