IT/React
[React] 리액트 쿼리 - useMutation, useQueryClient
HJ::
2023. 8. 28. 20:38
React Query
useMutation은 React Query 라이브러리의 일부로, API 호출 또는 데이터 수정 작업을 처리하는 데 사용됩니다.
리액트 쿼리 예제.
- TODO LIST 만들기
import React from 'react';
import { useMutation, useQueryClient } from 'react-query';
function TodoApp() {
const queryClient = useQueryClient();
// useMutation 훅을 사용하여 새로운 할 일을 생성하는 함수를 생성합니다.
const createTodoMutation = useMutation(newTodo => {
// 여기서는 실제로 API 호출하는 대신에 예시 데이터를 사용합니다.
const response = { id: Date.now(), text: newTodo, completed: false };
return response;
}, {
// 작업이 성공한 후에 실행될 콜백 함수입니다.
onSuccess: () => {
// 새로운 할 일이 추가되었으므로 쿼리를 업데이트합니다.
queryClient.invalidateQueries('todos');
}
});
const handleAddTodo = async () => {
const newTodo = prompt('Enter a new todo:');
if (newTodo) {
// useMutation 훅에서 생성한 함수를 호출하여 할 일을 생성합니다.
await createTodoMutation.mutateAsync(newTodo);
}
};
return (
<div>
<button onClick={handleAddTodo}>Add Todo</button>
{createTodoMutation.isLoading ? (
<div>Adding todo...</div>
) : (
<div>Todo added!</div>
)}
</div>
);
}
export default TodoApp;
- 이 함수는 비동기 작업을 수행하고 그 결과를 처리합니다.
- 작업이 성공적으로 완료되면 onSuccess 콜백이 호출되어 React Query의 캐시를 업데이트하고, 이로 인해 UI가 자동으로 업데이트됩니다.
리액트 쿼리 사용 이유
- API 호출, 데이터 캐싱, 상태 관리 등을 단순화합니다.
- 데이터를 가져오고 관리하는 데 필요한 복잡한 로직을 간소화합니다.
- React Query는 API 응답을 자동으로 캐시하여 중복 요청을 방지합니다.
- 백그라운드에서 주기적으로 데이터를 업데이트하여 최신 정보를 유지합니다.