react-query๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ฒ ์ํ ๊ฐ์ ธ์ค๊ธฐ, ์บ์ฑ, ๋๊ธฐํ ๋ฐ ์ ๋ฐ์ดํธ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
react query๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ provider๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๋ณดํต ์ต์๋จ ์๋ฆฌ๋จผํธ๋ก ์ฌ์ฉํ๋ฉฐ client props๋ฅผ ์ ๋ฌํด์ฃผ์ด์ผ ํ๋ค.
์ ๋ฌํ props๊ฐ์ QueryClient์ ์ธ์คํด์ค๋ฅผ ์ ๋ฌํด์ฃผ๋ฉด ๋๋ค.
QueryClientProvier๋ฅผ ํตํด ์ฑ ์ ์ฒด์์ QueryClent์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
import { QueryClient, QueryClientProvider } from 'react-query';
const queryClient = new QueryClient();
root.render(
<QueryClientProvider client={queryClient}>
<App />
</QueryClientProvider>
);
QueryClent๋ ์บ์์ ์ํธ์์ฉํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ค.
์ฐธ๊ณ
QueryClientProvier๋ฅผ ํตํด ๋ด๋ ค์ค QueryClient์ ์ ๊ทผํ๋ ค๋ฉด useQuery ์ฌ์ฉํด์ผ ํ๋ค.
๋ฐ์ดํฐ๋ฅผ getํ๊ธฐ ์ํ api๋ก, post, update๋ useMutation์ ์ฌ์ฉํ๋ค.
๋๊ฐ์ ์ธ์๋ฅผ ๊ฐ๋๋ฐ ์ฒซ ๋ฒ์งธ ์ธ์๋ quearyKey(query ๊ณ ์ ์๋ณ์), ๋ ๋ฒ์งธ ์ธ์๋ queryFn(api fetchํ ํจ์)๋ฅผ ๊ฐ๋๋ค.
import { useQuery } from "react-query";
const coinInfo = useQuery("coinList", fetchCoinList);
๋ฐ์ดํฐ ๋ฐ์์ค๋ ์ค

๋ฐ์ดํฐ ๋ฐ์์จ ์ํ

์ ๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ๋๋ isLoading ๊ฐ์ด true, ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ ํ์๋ false๋ก ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
isLoading์ด๋ผ๋ ๊ฐ์ ๋ก๋ฉ์ฐฝ ๊ตฌํ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค.
api์์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ data ๊ฐ์ ๋ด๊ธฐ๊ฒ ๋๋ค.
์ฌ์ฉ์์ ์บ์์ ์กด์ฌํ๋ ์ฟผ๋ฆฌ๋ฅผ ์กฐํํ ์ ์๋ ๊ฐ๋ฐ์ ๋๊ตฌ ์ด๋ค.
์ฌ์ฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
devtools๋ ๋๋๋ก ์ต์๋จ ์๋ฆฌ๋จผํธ ๋ด๋ถ์ ์ ์ํ๋๋ก ํ์. ํ์ด์ง ๋ฃจํธ์ ๊ฐ๊น์ธ์๋ก ์ ์๋ํ๊ธฐ ๋๋ฌธ์ด๋ค.
import {ReactQueryDevtools} from "react-query/devtools";
const App = () => {
<ReactQueryDevtools initialIsOen={true} />
}
์ต์ ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์.
devtools๋ฅผ ์ ์ํ๋ฉด ์คํ์ค์ธ ์ดํ๋ฆฌ์ผ์ด์ ์์ ๋ณด์ ์ค์ธ ์ฟผ๋ฆฌ, ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๋ค.

react query ์ฌ์ฉ์ ํ๋ฒ fetch ๋ ๋ฐ์ดํฐ๋ ์บ์์ ๋จ์์๊ธฐ ๋๋ฌธ์ ๋ก๋ฉ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค๋ฉด ์ต์ด ๋ฐ์ดํฐ ๋ฐ์์ฌ ๋๋ง ๋ก๋ฉ ๊ธฐ๋ฅ์ด ์๋ํ๋ค.
์บ์์ ์ด๋ฏธ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์์ฒญํ ํ์ ์์ด ๋ณด์ฌ์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.