const {
data,
error,
isError,
isIdle,
isPending,
isPaused,
isSuccess,
failureCount,
failureReason,
mutate,
mutateAsync,
reset,
status,
submittedAt,
variables,
} = useMutation({
mutationFn,
gcTime,
meta,
mutationKey,
networkMode,
onError,
onMutate,
onSettled,
onSuccess,
retry,
retryDelay,
scope,
throwOnError,
})
mutate(variables, {
onError,
onSettled,
onSuccess,
})
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 yourmutationFngcTime: 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. 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. 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) 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. 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.
isIdle,isPending,isSuccess,isError: boolean variables derived fromstatusisPaused: boolean- will be
trueif the mutation has beenpaused - see Network Mode for more information.
data: undefined | unknown- Defaults to
undefined - The last successfully resolved data for the mutation.
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.