React Query에 대해 배워보자.
React Query는 클라이언트 데이터와 서버 데이터를 구분하기 위해 사용된다.
개발을 하면서 thunk를 사용하게 될 경우 코드가 너무 많아지고, 서버 데이터와 클라이언트 데이터가 공존하게 된다.
그럴 경우 구분하기도 힘들어지고, 유지 보수에도 힘이 든다.
그래서! React Query를 사용한다.
우리의 React Query는 귀찮은 일을 대신 해준다.
보통 최상단에서 사용한다. (App.js)
import { QueryClient, QueryClientProvider } from "react-query";
const queryClient = new QueryClient();
export default function App() {
return (
<QueryClientProvider client={queryClient}>
<Root />
</QueryClientProvider>
);
}
React Query는 CRUD의 R에 사용하는 useQuery와, CUD에 사용하는 useMutation으로 나뉜다.
그리고 현재 데이터는 잘못되었다고 선언하는 invalidateQueries가 있다.
// getTodoList = axios.get('url')
const { isLoading, isError, data, error } = useQuery("todos", getTodoList)
const addTodo = useMutation(addPostTodo,
{
onSuccess: () => {
queryClient.invalidateQueries('todos');
// invalidateQueries가 선언되었기 때문에 'todos'라는 키값을 가진 get을 다시 실행.
},
},
);