import {useMutation} from 'blitz'
import updateProject from 'app/projects/mutations/updateProject'
function (props) {
const [updateProjectMutation] = useMutation(updateProject)
return (
<Formik
onSubmit={async values => {
try {
const project = await updateProjectMutation(values)
} catch (error) {
alert('Error saving project')
}
}}>
{/* ... */}
</Formik>
)
}For more examples and use cases, see the mutation usage documentation.
const [
invoke,
{
data,
error,
isError,
isIdle,
isLoading,
isPaused,
isSuccess,
mutate,
reset,
status,
}
] = useMutation(mutationResolver, {
mutationKey,
onError,
onMutate,
onSettled,
onSuccess,
useErrorBoundary,
})
const promise = invoke(inputArguments, {
onError,
onSettled,
onSuccess,
})mutationResolver: A Blitz mutation resolveroptionsmutationKey: stringqueryClient.setMutationDefaults or to identify the mutation in the
devtools.onMutate: (variables: TVariables) => Promise<TContext | void> | TContext | voidonError and onSettled functions in the event of a mutation failure
and can be useful for rolling back optimistic updates.onSuccess: (data: TData, variables: TVariables, context?: TContext) => Promise<void> | voidonError: (err: TError, variables: TVariables, context?: TContext) => Promise<void> | voidonSettled: (data: TData, error: TError, variables: TVariables, context?: TContext) => Promise<void> | voidretry: boolean | number | (failureCount: number, error: TError) => booleanfalse, failed mutations will not retry by default.true, failed mutations will retry infinitely.number, e.g. 3, failed mutations will retry until the
failed mutations count meets that number.retryDelay: number | (retryAttempt: number, error: TError) => numberretryAttempt integer and the actual Error
and returns the delay to apply before the next attempt in
milliseconds.attempt => Math.min(attempt > 1 ? 2 ** attempt * 1000 : 1000, 30 * 1000)
applies exponential backoff.attempt => attempt * 1000 applies linear backoff.useErrorBoundaryuseErrorBoundary value, which
is false[mutate, mutationExtras]
mutate: (variables: TVariables, { onSuccess, onSettled, onError }) => Promise<TData>useMutation.variables: TVariablesmutationFn.useMutation hook.onSuccess will fire only after the
latest call you've made.mutationExtras: Objectstatus: stringidle initial status prior to the mutation function executing.loading if the mutation is currently executing.error if the last mutation attempt resulted in an error.success if the last mutation attempt was successful.isIdle, isLoading, isSuccess, isError: boolean variables derived
from statusdata: undefined | unknownundefinederror: null | TErrorreset: () => void