일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 리액트 라우터 돔
- 스택
- React
- 프로그래머스
- 코테
- Next.js
- 코어자바스크립트
- tanstack query
- 자바스크립트
- 토이프로젝트
- JavaScript
- revalidatepath
- 그리디
- Form
- react pattern
- React Query
- 리액트
- 리덕스
- tailwind
- reduxtoolkit
- styled component
- 리액트 패턴
- react router dom
- Supabase
- 코딩테스트
- TypeScript
- 타입스크립트
- 동적계획법
- 프론트엔드
- 토이 프로젝트
- Today
- Total
느려도 한걸음씩
TanStack Query - (2) Setup 하기 본문
이번 포스트에서는 TanStack Query를 프로젝트에 적용하고, 전역에서 사용할 수 있도록 셋업하는 과정을 알아보겠습니다.
1. 설치
먼저 아래 명령어를 입력해 TanStack Query와 개발 도구(Devtools)를 설치합니다.
npm i @tanstack/react-query
npm i @tanstack/react-query-devtools
- @tanstack/react-query: TanStack Query의 핵심 라이브러리로, 서버 상태 관리를 위한 기능들을 제공합니다.
- @tanstack/react-query-devtools: 개발 중 캐시 상태, 쿼리 상태 등을 시각적으로 확인할 수 있는 유용한 도구입니다.
2. QueryClient 생성
React 앱 전체에서 쿼리 기능을 사용하려면 QueryClient를 만들어 QueryClientProvider로 감싸주어야 합니다.
이 클라이언트는 TanStack Query가 내부적으로 상태를 관리하는 데 사용하는 중심 객체입니다.
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 60 * 1000, // 1분 동안은 데이터를 신선한 것으로 간주
},
},
});
staleTime: 데이터를 신선한 상태로 유지하는 시간입니다. 이 시간 동안은 같은 쿼리를 다시 호출해도 네트워크 요청을 하지 않습니다. UX를 부드럽게 만드는 중요한 설정입니다.
3. React 앱에 적용하기
이제 App 컴포넌트에서 QueryClientProvider로 애플리케이션 전체를 감싸주고, ReactQueryDevtools도 함께 추가해줍니다.
import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";
import GlobalStyles from "./styles/GlobalStyles";
import Dashboard from "./pages/Dashboard";
import Bookings from "./pages/Bookings";
import Cabins from "./pages/Cabins";
import Users from "./pages/Users";
import Settings from "./pages/Settings";
import Account from "./pages/Account";
import Login from "./pages/Login";
import PageNotFound from "./pages/PageNotFound";
import AppLayout from "./ui/AppLayout";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 60 * 1000,
},
},
});
function App() {
return (
<QueryClientProvider client={queryClient}>
<ReactQueryDevtools initialIsOpen={false} />
<GlobalStyles />
<BrowserRouter>
<Routes>
<Route element={<AppLayout />}>
<Route index element={<Navigate replace to='dashboard' />} />
<Route path='dashboard' element={<Dashboard />} />
<Route path='bookings' element={<Bookings />} />
<Route path='cabins' element={<Cabins />} />
<Route path='users' element={<Users />} />
<Route path='settings' element={<Settings />} />
<Route path='account' element={<Account />} />
</Route>
<Route path='login' element={<Login />} />
<Route path='*' element={<PageNotFound />} />
</Routes>
</BrowserRouter>
</QueryClientProvider>
);
}
export default App;
이렇게 하면 프로젝트 어디서든 useQuery, useMutation 등의 훅을 사용할 수 있게 됩니다.
4. 라우팅 및 페이지 구성
이 포스트에서는 라우팅 구조까지 함께 설정되어 있습니다.
react-router-dom을 사용해 여러 페이지(Dashboard, Cabins, Users 등)를 정의하고, AppLayout을 통해 공통 UI 레이아웃을 구성하고 있습니다.
이 부분은 프로젝트에 따라 생략하거나 변경될 수 있습니다. 핵심은 QueryClientProvider가 루트 컴포넌트에 적용되어 있어야 한다는 점입니다.
✅ 정리
TanStack Query는 프로젝트의 루트에 클라이언트를 설정해주기만 하면,
이후부터는 어떤 컴포넌트에서도 간편하게 서버 데이터를 가져오고, 캐싱하고, 갱신할 수 있게 됩니다.
다음 포스트에서는 useQuery를 사용해서 실제 데이터를 가져오는 예제를 작성해보겠습니다.
'FE develop > TanStack Query' 카테고리의 다른 글
TanStack Query - (5) Prefetching 기능 (0) | 2025.04.14 |
---|---|
TanStack Query - (4) useMutation으로 데이터 변형하기 (0) | 2025.04.10 |
TanStack Query - (3) useQuery로 데이터 패칭하기 (0) | 2025.04.10 |
TanStack Query - (1) Tanstack Query란? (0) | 2025.04.10 |