mutate vs mutateAsync 차이 정리React Query를 사용할 때 useMutation을 이용해 데이터를 등록하거나 수정할 때,
두 가지 방법 중 하나를 사용할 수 있습니다.
mutatemutateAsync이번 글에서는 두 방식의 차이와 사용 예시를 간단히 정리해보겠습니다.
mutate — 콜백 기반의 빠른 실행 방식const mutation = useMutation(updateUser)
mutation.mutate(data, {
onSuccess: () => console.log("성공"),
onError: () => console.log("실패"),
})
onSuccess, onError로 처리즉, 빠르게 mutation을 실행하고 결과는 콜백으로 처리하는 방식입니다.
mutateAsync — Promise 기반의 async/await 방식const mutation = useMutation(updateUser)
try {
const result = await mutation.mutateAsync(data)
console.log("성공", result)
} catch (e) {
console.error("실패", e)
}
await을 사용할 수 있어 비동기 흐름 제어에 유리try / catch로 처리즉, mutation의 결과를 직접 변수로 받아서 후속 로직에 사용할 수 있습니다.
| 구분 | mutate | mutateAsync |
|---|---|---|
| 기반 | 콜백 기반 | Promise 기반 |
| 호출 시점 | 즉시 실행 | async/await 사용 가능 |
| 반환값 | 없음 | Promise 반환 |
| 에러 처리 | onError 콜백 | try/catch 블록 |
| 적합한 상황 | UI 이벤트 중심 | 비동기 로직 중심 |
mutatemutateAsync두 방식 모두 동일한 기능을 수행하지만,
코드 스타일과 흐름 제어 방식이 다르므로 상황에 따라 적절히 선택하면 됩니다.