React-query๋ ์๋ฒ์ ๊ฐ์ ํด๋ผ์ด์ธํธ์ ๊ฐ์ ธ์ค๊ฑฐ๋, ์บ์ฑ, ๊ฐ ์ ๋ฐ์ดํธ, ์๋ฌ ํธ๋ค๋ง ๋ฑ ๋น๋๊ธฐ ๊ณผ์ ์ ๋์ฑ ํธํ๊ฒ ํ๋๋ฐ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. React-query๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์๋ฒ, ํด๋ผ์ด์ธํธ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฅํ ์ ์์ต๋๋ค. React-query์ ์ฅ์ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์บ์ฑ
- get์ ํ ๋ฐ์ดํฐ์ ๋ํด update๋ฅผ ํ๋ฉด ์๋์ผ๋ก get์ ๋ค์ ์ํํ๋ค. (์๋ฅผ ๋ค๋ฉด ๊ฒ์ํ์ ๊ธ์ ๊ฐ์ ธ์์ ๋ ๊ฒ์ํ์ ๊ธ์ ์์ฑํ๋ฉด ๊ฒ์ํ ๊ธ์ getํ๋ api๋ฅผ ์๋์ผ๋ก ์คํ )
- ๋ฐ์ดํฐ๊ฐ ์ค๋ ๋์๋ค๊ณ ํ๋จ๋๋ฉด ๋ค์ get (
invalidateQueries
) - ๋์ผ ๋ฐ์ดํฐ ์ฌ๋ฌ๋ฒ ์์ฒญํ๋ฉด ํ๋ฒ๋ง ์์ฒญํ๋ค. (์ต์ ์ ๋ฐ๋ผ ์ค๋ณต ํธ์ถ ํ์ฉ ์๊ฐ ์กฐ์ ๊ฐ๋ฅ)
- ๋ฌดํ ์คํฌ๋กค (Infinite Queriesย (opens new window))
- ๋น๋๊ธฐ ๊ณผ์ ์ ์ ์ธ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
- react hook๊ณผ ์ฌ์ฉํ๋ ๊ตฌ์กฐ๊ฐ ๋น์ทํ๋ค
์๋๋ถํฐ๋ ์ ๊ฐ ํ๋ก์ ํธ์ ํ๋ฒ ๋์ ํด๋ณธ React-qeury์ ์์ ์ฝ๋์ ๋๋ค.
//index.js
//...
import { QueryClient, QueryClientProvider } from 'react-query';
import { ReactQueryDevtools } from 'react-query/devtools';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<QueryClientProvider client={queryClient}>
<ReactQueryDevtools initialIsOpen={true} />
<App />
</QueryClientProvider>,
);
// src>hooks>query>useGetProfile.js
import { useQuery } from 'react-query';
import { getProfile } from '../../api/getProfile';
export const useGetProfile = () => {
return useQuery('getProfile', getProfile, {
retry: 0,
onSuccess: res => {
console.log(res);
},
});
};
// src>pages>Home>Main>HomaMain.js
// ...
const response = useGetProfile().data;
console.log(response);
์์ ๊ฐ์ด ์ถ๋ ฅํ๋ฉด ์๋์ ๊ฐ์ด ํ๋ฉด์ ์ถ๋ ฅ์ด ๋ฉ๋๋ค.
์ ๋ฐฉ๋ฒ ์ธ์๋ useQueries, useMutation๋ฑ ๋ง์ ๋ฉ์๋๋ค์ด ์๋๋ฐ ๋ค์๋ฒ์ ์์ฑํ๋๋กํ๊ฒ ์ต๋๋ค.