<aside> 💡 Fetching, Caching, 동기화, 서버 데이터 업데이트를 쉽게 만들어주는 라이브러리이다.

</aside>

기존 미들웨어의 한계

<aside> 💡 redux-thunk, redux-saga 등 api 통신과 비동기 데이터 관리를 위한 라이브러리의 한계가 있다.

react query의 장점

<aside> 💡 쉽고 코드가 적고 책임에서 자유롭다.

react query 키워드

<aside> 💡 주요 키워드

</aside>

사용방법

  1. 설치
yarn add react-query
  1. QueryClient 전체 주입
import React from "react";
import Router from "./shared/Router";
**import { QueryClient, QueryClientProvider } from "react-query";**

**const queryClient = useQueryClient();**

const App = () => {

  return (
    **<QueryClientProvider client={queryClient}>**
      <Router />;
    **</QueryClientProvider>**
  );
};

export default App;
  1. 사용
**const SERVER_URI = "<http://localhost:4000>";**

const getTodos = async () => {
  const response = await axios.get(`${SERVER_URI}/todos`);
  return response.data;
};

**const addTodo = async (newTodo) => {
  await axios.post(`${SERVER_URI}/todos`, newTodo);
};**

const queryClient = new QueryClient();

const mutation = useMutation(addTodo, {
  onSuccess: () => {
    // Invalidate and refresh
    // 이렇게 하면, todos라는 이름으로 만들었던 query를
    // invalidate 할 수 있어요.
    queryClient.invalidateQueries("todos");
  },
});