서버에서 데이터를 가져오는 것은 단순히 useQuery를 사용하면 될테지만,
서버의 데이터를 업데이트 하는 경우에는 동일한 방식을 사용하는 것이 적절치 않다. 데이터의 생성/수성/삭제 (CRUD) 시에는 useMutation hook을 사용하면 된다.
const {
data,
error,
isError,
isIdle,
isLoading,
isPaused,
isSuccess,
mutate,
mutateAsync,
reset,
status,
} = useMutation(mutationFn, {
mutationKey,
onError,
onMutate,
onSettled,
onSuccess,
retry,
retryDelay,
useErrorBoundary,
meta,
})
mutate(variables, {
onError,
onSettled,
onSuccess,
})
useMutation()
의 첫번째 인자인 mutationFn
는 필수!useMutation()
의 옵션과 리턴하는 데이터의 종류는 매우 다양하다. 공식문서 꼭 확인해보기!useMutation
써보기import { useMutation } from 'react-query';
import { getApi } from '@apis/index';
const useTodoCreator = () => {
const mutation = useMutation((newTodo: TodosTypes) =>
getApi.post('/todos', newTodo)
);
return mutation;
};
export default useTodoCreator;
import useTodoCreator from '@hooks/todos/useTodoCreator';
const TodoCreator: NextPage = (): JSX.Element => {
const { mutate } = useTodoCreator();
// ...
const addItem = () => {
// ...
mutate(todo);
};
return (
<InputWrap>
// ...
<button type="button" onClick={addItem}>
등록
</button>
</InputWrap>
);
};
export default TodoCreator;