useMutation
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,
},
queryClient,
)
mutate(variables, {
onError,
onSettled,
onSuccess,
})
매개변수 1(옵션)
mutationFn: (variables: TVariables, context: MutationFunctionContext) => Promise<TData>- 필수이지만, 기본 뮤테이션 함수가 정의되지 않은 경우에만 해당합니다
- 비동기 작업을 수행하고 Promise를 반환하는 함수입니다.
variables는mutate가 사용자의mutationFn에 전달하는 객체입니다.context는mutate가mutationFn에 전달하는 객체입니다.QueryClient,mutationKey에 대한 참조와 선택적meta객체를 포함합니다.
gcTime: number | Infinity- 사용되지 않거나 비활성 상태인 캐시 데이터가 메모리에 남아 있는 시간(밀리초)입니다. 뮤테이션의 캐시가 사용되지 않거나 비활성 상태가 되면 해당 캐시 데이터는 이 시간이 지난 후 가비지 컬렉션됩니다. 서로 다른 캐시 시간이 지정되면 가장 긴 시간이 사용됩니다.
Infinity로 설정하면 가비지 컬렉션이 비활성화됩니다- 참고: 허용되는 최대 시간은 약 24일이지만, timeoutManager.setTimeoutProvider를 사용하면 이 제한을 우회할 수 있습니다.
mutationKey: unknown[]- 선택 사항
- 뮤테이션 키를 설정하여
queryClient.setMutationDefaults로 설정한 기본값을 상속할 수 있습니다.
networkMode: 'online' | 'always' | 'offlineFirst'- 선택 사항
- 기본값은
'online'입니다 - 자세한 내용은 네트워크 모드를 참조하세요.
onMutate: (variables: TVariables, context: MutationFunctionContext) => Promise<TOnMutateResult | void> | TOnMutateResult | void- 선택 사항
- 이 함수는 뮤테이션 함수가 실행되기 전에 실행되며, 뮤테이션 함수가 받을 것과 동일한 변수가 전달됩니다.
- 뮤테이션이 성공할 것으로 기대하며 리소스에 낙관적 업데이트를 수행하는 데 유용합니다
- 이 함수에서 반환된 값은 뮤테이션 실패 시
onError및onSettled함수 모두에 전달되며, 낙관적 업데이트를 롤백하는 데 유용할 수 있습니다.
onSuccess: (data: TData, variables: TVariables, onMutateResult: TOnMutateResult | undefined, context: MutationFunctionContext) => Promise<unknown> | unknown- 선택 사항
- 이 함수는 뮤테이션이 성공하면 실행되며 뮤테이션 결과가 전달됩니다.
- Promise가 반환되면 계속 진행하기 전에 이행될 때까지 기다립니다
onError: (err: TError, variables: TVariables, onMutateResult: TOnMutateResult | undefined, context: MutationFunctionContext) => Promise<unknown> | unknown- 선택 사항
- 뮤테이션에서 오류가 발생하면 이 함수가 실행되며 오류가 전달됩니다.
- Promise가 반환되면 계속 진행하기 전에 이행될 때까지 기다립니다
onSettled: (data: TData, error: TError, variables: TVariables, onMutateResult: TOnMutateResult | undefined, context: MutationFunctionContext) => Promise<unknown> | unknown- 선택 사항
- 이 함수는 뮤테이션을 성공적으로 가져오거나 오류가 발생했을 때 실행되며 데이터 또는 오류가 전달됩니다
- Promise가 반환되면 계속 진행하기 전에 이행될 때까지 기다립니다
retry: boolean | number | (failureCount: number, error: TError) => boolean- 기본값은
0입니다. false이면 실패한 뮤테이션을 재시도하지 않습니다.true이면 실패한 뮤테이션을 무한히 재시도합니다.number(예:3)로 설정하면 실패한 뮤테이션 횟수가 해당 숫자에 도달할 때까지 실패한 뮤테이션을 재시도합니다.
- 기본값은
retryDelay: number | (retryAttempt: number, error: TError) => number- 이 함수는
retryAttempt정수와 실제 Error를 받아 다음 시도 전에 적용할 지연 시간을 밀리초 단위로 반환합니다. attempt => Math.min(attempt > 1 ? 2 ** attempt * 1000 : 1000, 30 * 1000)과 같은 함수는 지수 백오프를 적용합니다.attempt => attempt * 1000과 같은 함수는 선형 백오프를 적용합니다.
- 이 함수는
scope: { id: string }- 선택 사항
- 기본값은 고유한 id입니다(따라서 모든 뮤테이션이 병렬로 실행됩니다).
- 동일한 scope id를 가진 뮤테이션은 직렬로 실행됩니다.
throwOnError: undefined | boolean | (error: TError) => boolean- 뮤테이션 오류가 렌더링 단계에서 발생하여 가장 가까운 오류 경계로 전파되도록 하려면 이를
true로 설정합니다 - 오류를 error boundary에 발생시키는 동작을 비활성화하려면 이를
false로 설정합니다. - 함수로 설정하면 오류가 함수에 전달되며, 함수는 오류 경계에 오류를 표시할지(
true) 또는 오류를 상태로 반환할지(false)를 나타내는 boolean을 반환해야 합니다.
- 뮤테이션 오류가 렌더링 단계에서 발생하여 가장 가까운 오류 경계로 전파되도록 하려면 이를
meta: Record<string, unknown>- 선택 사항
- 설정하면 필요에 따라 사용할 수 있는 추가 정보를 뮤테이션 캐시 항목에 저장합니다. 이 정보는
mutation을 사용할 수 있는 모든 위치(예:MutationCache의onError,onSuccess함수)에서 접근할 수 있습니다.
파라미터2(QueryClient)
queryClient?: QueryClient- 사용자 지정 QueryClient를 사용하려면 이를 사용합니다. 그렇지 않으면 가장 가까운 context의 항목이 사용됩니다.
반환값
mutate: (variables: TVariables, { onSuccess, onSettled, onError }) => void- 변수와 함께 호출하여 뮤테이션을 트리거하고 선택적으로 추가 콜백 옵션에 훅을 지정할 수 있는 뮤테이션 함수입니다.
variables: TVariables- 선택 사항
mutationFn에 전달할 변수 객체입니다.
onSuccess: (data: TData, variables: TVariables, onMutateResult: TOnMutateResult | undefined, context: MutationFunctionContext) => void- 선택 사항
- 이 함수는 뮤테이션이 성공하면 실행되며 뮤테이션 결과가 전달됩니다.
- Void 함수이며 반환된 값은 무시됩니다
onError: (err: TError, variables: TVariables, onMutateResult: TOnMutateResult | undefined, context: MutationFunctionContext) => void- 선택 사항
- 뮤테이션에서 오류가 발생하면 이 함수가 실행되며 오류가 전달됩니다.
- Void 함수이며 반환된 값은 무시됩니다
onSettled: (data: TData | undefined, error: TError | null, variables: TVariables, onMutateResult: TOnMutateResult | undefined, context: MutationFunctionContext) => void- 선택 사항
- 이 함수는 뮤테이션을 성공적으로 가져오거나 오류가 발생했을 때 실행되며 데이터 또는 오류가 전달됩니다
- Void 함수이며 반환된 값은 무시됩니다
- 여러 요청을 수행하면
onSuccess는 가장 최근에 호출한 요청 이후에만 실행됩니다.
mutateAsync: (variables: TVariables, { onSuccess, onSettled, onError }) => Promise<TData>mutate와 유사하지만 await할 수 있는 Promise를 반환합니다.
status: MutationStatus- 다음과 같습니다:
- 뮤테이션 함수가 실행되기 전의
idle초기 상태입니다. - 뮤테이션이 현재 실행 중이면
pending입니다. - 마지막 뮤테이션 시도에서 오류가 발생했다면
error입니다. - 마지막 뮤테이션 시도가 성공한 경우
success입니다.
- 뮤테이션 함수가 실행되기 전의
- 다음과 같습니다:
isIdle,isPending,isSuccess,isError:status에서 파생된 boolean 변수isPaused: boolean- 뮤테이션이
paused된 경우true가 됩니다 - 자세한 내용은 네트워크 모드를 참조하세요.
- 뮤테이션이
data: undefined | unknown- 기본값은
undefined입니다 - 뮤테이션에서 마지막으로 성공적으로 이행된 데이터입니다.
- 기본값은
error: null | TError- 오류가 발생한 경우 해당 쿼리의 오류 객체입니다.
reset: () => void- 뮤테이션의 내부 상태를 정리하는 함수입니다(즉, 뮤테이션을 초기 상태로 재설정합니다).
failureCount: number- 뮤테이션의 실패 횟수입니다.
- 뮤테이션이 실패할 때마다 증가합니다.
- 뮤테이션이 성공하면
0로 재설정합니다.
failureReason: null | TError- 뮤테이션 재시도의 실패 원인입니다.
- 뮤테이션이 성공하면
null로 재설정합니다.
submittedAt: number- 뮤테이션이 제출된 시점의 타임스탬프입니다.
- 기본값은
0입니다.
variables: undefined | TVariablesmutationFn에 전달된variables객체입니다.- 기본값은
undefined입니다.