사용 함수
초기 세팅
App 컴포넌트를 <QueryClientProvider client={queryClient}> 로 감싸준다.
const queryClient = new QueryClient();
root.render(
<>
<QueryClientProvider client={queryClient}>
<ThemeProvider theme={theme}>
<App />
</ThemeProvider>
</QueryClientProvider>
</>,
);
api fetching을 다른 파일(api.ts)에서 진행하고, json 파일을 return 받는다
useQuery() 함수를 사용한다.
api.ts
export function fetchCoins() {
return fetch('<https://api.coinpaprika.com/v1/coins>').then((res) =>
res.json(),
);
}
Coins.tsx
const { isLoading, data } = useQuery<ICoin[]>(['allCoins'], fetchCoins);
특이점
useQuery를 통해 넘겨주는 인자(data 이름, fetch 함수)와 useQuery를 통해 받는 정보 (isLoading과 data)에는 주의할 사항이 있다.
const { isLoading: infoLoading, data: infoData } = useQuery<IInfoData>(
['info', coinId],
() => fetchCoinInfo(coinId!),
);
const { isLoading: tickersLoading, data: tickersData } = useQuery<IPriceData>(
['tickers', coinId],
() => fetchCoinTickers(coinId!),
);
const loading = infoLoading || tickersLoading;
느낀점