๋ฆฌ์กํธ๋ก ๊ฐ๋ฐํ ๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ fetchingํ๊ณ loading ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด์ state์ fetchํน์ axios๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ค. ์ด ์ผ๋ จ์ ๊ณผ์ ์ ๋จ ์ฝ๋ ํ๋๋ก ๊ฐํธํ ํ ์ ์์ผ๋ฉฐ caching๊ธฐ๋ฅ ๊น์ง ์๋ react-query๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค.
import { QueryClient, QueryClientProvider } from "react-query";
root.render(
<QueryClientProvider client={queryClient}>
<App />
</QueryClientProvider>
);
์์ง์ ์ providerํ์์ผ๋ก ์ต์์ ๋ถ๋ชจ์๊ฒ ์์ ๊ฐ์ด ํด์ฃผ๋ ์ง ๋ชจ๋ฅด๊ฒ ๋ค. ๋ด ๋ธ๋ก๊ทธ๋ ์์ง ์ ๋ณด์ ๋ฌ์ฑ ๋ณด๋ค๋ ๊ณต๋ถ ๊ธฐ๋ก ์ผ๊ธฐ์ ๊ฐ๊น์ฐ๋ ์ด๋ ์ฐจํ์ ๋ด ์ค๋ ฅ์ด ๋จ์๊ฒ ์ข์ ์ ๋ณด๋ฅผ ์ ๋ฌํ ์์ค์ด ๋๋ค๋ฉด ํฌ์คํ ํ ๊ฒ์ด๋ค.
const { isLoading, data } = useQuery<ICoin[]>("allCoins", fetchCoins);
useQuery๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ง ์ข์ ์ฅ์ ์ด ํ๋ ์๋ค. ๋ผ์ฐํ ์ผ๋ก ์ปดํฌ๋ํธ๊ฐ ์ฌ ๋ ๋๋ง์ด ๋์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ fetchingํ์ง ์๋๋ค.
caching์ด ๋๋๊ฒ ์ต๋ ์ฅ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค.
'react' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ๋ฐ๋ชจ๋์์ useEffect๊ฐ 2๋ฒ ์คํ๋๋ ๊ฒฝ์ฐ (0) | 2023.08.30 |
---|---|
[React] ๋ฆฌ์กํธ์์ TypeScript๋ฅผ ์ธ ๋ ํ์ํ ๊ฒ (feat. useState) (0) | 2023.08.03 |
[React] Styled-components ์ฌ์ฉ๋ฒ๊ณผ ์ ์ฉํ ๊ธฐ๋ฅ๋ค (0) | 2023.07.28 |
[React] Recoil ์ฌ์ฉ ๋ฐฉ๋ฒ / ๊ณต์๋ฌธ์๋ฅผ ํตํด ์์๋ณด๊ธฐ (0) | 2023.07.26 |
[React] ์ํ๊ด๋ฆฌ์ ํ์์ฑ๊ณผ ๋ฆฌ๋์ค ver 1 (0) | 2023.07.26 |