data-fetching
TanStack Query.
React Query의 캐시, staleTime, invalidation, SSR 패턴
TanStack Query는 서버 state의 fetch, cache, sync, invalidation을 선언적으로 관리하는 라이브러리입니다.
📘 핵심 개념
| 개념 | 설명 |
|---|---|
| queryKey | 캐시 identity (배열) |
| queryFn | 데이터 fetch 함수 |
| staleTime | fresh로 간주하는 시간 (refetch 안 함) |
| gcTime (cacheTime) | unused cache GC |
| invalidation | queryClient.invalidateQueries → refetch |
📘 기본
const { data, isLoading, error } = useQuery({
queryKey: ['posts', id],
queryFn: () => fetchPost(id),
staleTime: 60_000,
});
🧩 패턴
- Optimistic update:
onMutate+ rollback - Prefetch:
queryClient.prefetchQuery(hover, router) - Infinite query: cursor pagination
- SSR: dehydrate/hydrate (Next.js
@tanstack/react-queryintegration)
⚖️ vs SWR / fetch in useEffect
- dedupe, background refetch, devtools, mutation lifecycle
- 단순 one-off fetch엔 과할 수 있음
🔗 참고 자료
- TanStack Query React Overview — React Query 개요와 핵심 개념을 설명한다.
- TanStack Query Important Defaults — staleTime, gcTime 등 기본값을 정리한다.
- TanStack Query Caching — 쿼리 캐시 동작과 무효화를 다룬다.
