1const {
2 data,
3 error,
4 isError,
5 isIdle,
6 isPending,
7 isPaused,
8 isSuccess,
9 failureCount,
10 failureReason,
11 mutate,
12 mutateAsync,
13 reset,
14 status,
15 submittedAt,
16 variables,
17} = useMutation({
18 mutationFn,
19 gcTime,
20 meta,
21 mutationKey,
22 networkMode,
23 onError,
24 onMutate,
25 onSettled,
26 onSuccess,
27 retry,
28 retryDelay,
29 scope,
30 throwOnError,
31})
32
33mutate(variables, {
34 onError,
35 onSettled,
36 onSuccess,
37})
Options
mutationFn: (variables: TVariables) => Promise<TData>- Required, but only if no default mutation function has been defined
- A function that performs an asynchronous task and returns a promise.
variablesis an object thatmutatewill pass to yourmutationFn
gcTime: number | Infinity- The time in milliseconds that unused/inactive cache data remains in memory. When a mutation's cache becomes unused or inactive, that cache data will be garbage collected after this duration. When different cache times are specified, the longest one will be used.
- If set to
Infinity, will disable garbage collection - Note: the maximum allowed time is about 24 days. See more.
mutationKey: unknown[]- Optional
- A mutation key can be set to inherit defaults set with
queryClient.setMutationDefaults.
networkMode: 'online' | 'always' | 'offlineFirst- Optional
- defaults to
'online' - see Network Mode for more information.
onMutate: (variables: TVariables) => Promise<TContext | void> | TContext | void- Optional
- This function will fire before the mutation function is fired and is passed the same variables the mutation function would receive
- Useful to perform optimistic updates to a resource in hopes that the mutation succeeds
- The value returned from this function will be passed to both the
onErrorandonSettledfunctions in the event of a mutation failure and can be useful for rolling back optimistic updates.
onSuccess: (data: TData, variables: TVariables, context: TContext) => Promise<unknown> | unknown- Optional
- This function will fire when the mutation is successful and will be passed the mutation's result.
- If a promise is returned, it will be awaited and resolved before proceeding
onError: (err: TError, variables: TVariables, context?: TContext) => Promise<unknown> | unknown- Optional
- This function will fire if the mutation encounters an error and will be passed the error.
- If a promise is returned, it will be awaited and resolved before proceeding
onSettled: (data: TData, error: TError, variables: TVariables, context?: TContext) => Promise<unknown> | unknown- Optional
- This function will fire when the mutation is either successfully fetched or encounters an error and be passed either the data or error
- If a promise is returned, it will be awaited and resolved before proceeding
retry: boolean | number | (failureCount: number, error: TError) => boolean- Defaults to
0. - If
false, failed mutations will not retry. - If
true, failed mutations will retry infinitely. - If set to an
number, e.g.3, failed mutations will retry until the failed mutations count meets that number.
- Defaults to
retryDelay: number | (retryAttempt: number, error: TError) => number- This function receives a
retryAttemptinteger and the actual Error and returns the delay to apply before the next attempt in milliseconds. - A function like
attempt => Math.min(attempt > 1 ? 2 ** attempt * 1000 : 1000, 30 * 1000)applies exponential backoff. - A function like
attempt => attempt * 1000applies linear backoff.
- This function receives a
scope: { id: string }- Optional
- Defaults to a unique id (so that all mutations run in parallel)
- Mutations with the same scope id will run in serial
throwOnError: undefined | boolean | (error: TError) => boolean- Defaults to the global query config's
throwOnErrorvalue, which isundefined - Set this to
trueif you want mutation errors to be thrown in the render phase and propagate to the nearest error boundary - Set this to
falseto disable the behavior of throwing errors to the error boundary. - If set to a function, it will be passed the error and should return a boolean indicating whether to show the error in an error boundary (
true) or return the error as state (false)
- Defaults to the global query config's
meta: Record<string, unknown>- Optional
- If set, stores additional information on the mutation cache entry that can be used as needed. It will be accessible wherever the
mutationis available (eg.onError,onSuccessfunctions of theMutationCache).
queryClient?: QueryClient,- Use this to use a custom QueryClient. Otherwise, the one from the nearest context will be used.
Returns
mutate: (variables: TVariables, { onSuccess, onSettled, onError }) => void- The mutation function you can call with variables to trigger the mutation and optionally hooks on additional callback options.
variables: TVariables- Optional
- The variables object to pass to the
mutationFn.
onSuccess: (data: TData, variables: TVariables, context: TContext) => void- Optional
- This function will fire when the mutation is successful and will be passed the mutation's result.
- Void function, the returned value will be ignored
onError: (err: TError, variables: TVariables, context: TContext | undefined) => void- Optional
- This function will fire if the mutation encounters an error and will be passed the error.
- Void function, the returned value will be ignored
onSettled: (data: TData | undefined, error: TError | null, variables: TVariables, context: TContext | undefined) => void- Optional
- This function will fire when the mutation is either successfully fetched or encounters an error and be passed either the data or error
- Void function, the returned value will be ignored
- If you make multiple requests,
onSuccesswill fire only after the latest call you've made.
mutateAsync: (variables: TVariables, { onSuccess, onSettled, onError }) => Promise<TData>- Similar to
mutatebut returns a promise which can be awaited.
- Similar to
status: string- Will be:
idleinitial status prior to the mutation function executing.pendingif the mutation is currently executing.errorif the last mutation attempt resulted in an error.successif the last mutation attempt was successful.
- Will be:
isIdle,isPending,isSuccess,isError: boolean variables derived fromstatusisPaused: boolean- will be
trueif the mutation has beenpaused - see Network Mode for more information.
- will be
data: undefined | unknown- Defaults to
undefined - The last successfully resolved data for the mutation.
- Defaults to
error: null | TError- The error object for the query, if an error was encountered.
reset: () => void- A function to clean the mutation internal state (i.e., it resets the mutation to its initial state).
failureCount: number- The failure count for the mutation.
- Incremented every time the mutation fails.
- Reset to
0when the mutation succeeds.
failureReason: null | TError- The failure reason for the mutation retry.
- Reset to
nullwhen the mutation succeeds.
submittedAt: number- The timestamp for when the mutation was submitted.
- Defaults to
0.
variables: undefined | TVariables- The
variablesobject passed to themutationFn. - Defaults to
undefined.
- The
last updated: