mason
mason-log.

mason

mason.

안녕하세요. mason 입니다.

data-fetching

TanStack Query.

React Query의 캐시, staleTime, invalidation, SSR 패턴

TanStack Query는 서버 state의 fetch, cache, sync, invalidation을 선언적으로 관리하는 라이브러리입니다.

📘 핵심 개념

TanStack Query fresh stale inactive GC 수명

개념설명
queryKey캐시 identity (배열)
queryFn데이터 fetch 함수
staleTimefresh로 간주하는 시간 (refetch 안 함)
gcTime (cacheTime)unused cache GC
invalidationqueryClient.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-query integration)

⚖️ vs SWR / fetch in useEffect

  • dedupe, background refetch, devtools, mutation lifecycle
  • 단순 one-off fetch엔 과할 수 있음

🔗 참고 자료