useMutation | TanStack Query Docs
useQuery
와 다르게 mutation
은 데이터를 생성(post)
/ 업데이트(update)
/ 삭제(delete)
할 때 사용 된다.useMutation
의 경우 일회성이기 때문에 캐시 데이터가 없다.useMutation
은 반환 객체에서 mutation
함수를 반환한다.onMutate콜백
: 낙관적 쿼리에서 사용하고, 변이가 실패할 때 복원할 수 있도록 이전 상태를 저장하는데 사용한다.const CreateTodo = () => {
const mutation = useMutation(createTodo, {
onMutate() {
/* ... */
},
onSuccess(data) {
console.log(data);
},
onError(err) {
console.log(err);
},
onSettled() {
/* ... */
},
});
const onCreateTodo = (e) => {
e.preventDefault();
mutation.mutate({ title });
};
return <>...</>;
};
mutate
메서드를 이용해서 요청 함수를 호출할 수 있다.onSuccess
, onError
메서드를 통해 성공 했을 시, 실패 했을 시 response 데이터를 핸들링할 수 있다.onMutate
는 mutation 함수가 실행되기 전에 실행되고, mutation 함수가 받을 동일한 변수가 전달된다.onSettled
는 try...catch...finally 구문의 finally
처럼 요청이 성공하든 에러가 발생되든 상관없이 마지막에 실행된다.const mutation = useMutation(addTodo);
try {
const todo = await mutation.mutateAsync(todo);
console.log(todo);
} catch (error) {
console.error(error);
} finally {
console.log("done");
}
mutateAsync
를 사용해서 얻어올 수 있다.