TanStack React Query 주요 함수 정리표

1. 핵심 Hooks

함수용도주요 반환값주요 옵션
useQuery데이터 조회 (GET)dataisLoadingisErrorerrorisFetchingrefetchqueryKeyqueryFnenabledstaleTimegcTimeretryselect
useMutation데이터 변경 (POST/PUT/DELETE)mutatemutateAsyncisPendingisSuccessisErrordataresetmutationFnonSuccessonErroronMutateonSettled
useInfiniteQuery무한 스크롤/페이지네이션datafetchNextPagefetchPreviousPagehasNextPagehasPreviousPageisFetchingNextPagequeryKeyqueryFninitialPageParamgetNextPageParamgetPreviousPageParam
useQueryClientQueryClient 인스턴스 접근queryClient 객체
useSuspenseQuerySuspense와 함께 사용data (항상 존재)useQuery와 동일
useQueries여러 쿼리 동시 실행쿼리 결과 배열queries 배열
useIsFetching현재 fetching 중인 쿼리 수숫자queryKeyfilters
useIsMutating현재 mutating 중인 개수숫자mutationKeyfilters

2. QueryClient 메서드

캐시 관리

메서드용도예시
invalidateQueries쿼리를 stale로 만들고 리페치queryClient.invalidateQueries({ queryKey: ['todos'] })
refetchQueries쿼리 즉시 리페치queryClient.refetchQueries({ queryKey: ['todos'] })
cancelQueries진행 중인 쿼리 취소queryClient.cancelQueries({ queryKey: ['todos'] })
removeQueries쿼리를 캐시에서 제거queryClient.removeQueries({ queryKey: ['todos'] })
resetQueries쿼리를 초기 상태로 리셋queryClient.resetQueries({ queryKey: ['todos'] })
clear모든 캐시 제거queryClient.clear()

데이터 조회/설정

메서드용도예시
getQueryData캐시에서 데이터 읽기queryClient.getQueryData(['todos'])
setQueryData캐시 데이터 직접 수정queryClient.setQueryData(['todos'], newData)
getQueryState쿼리 상태 가져오기queryClient.getQueryState(['todos'])
setQueryDefaults쿼리 기본 옵션 설정queryClient.setQueryDefaults(['todos'], { staleTime: 10000 })
getQueriesData여러 쿼리 데이터 가져오기queryClient.getQueriesData({ queryKey: ['todos'] })
setQueriesData여러 쿼리 데이터 설정queryClient.setQueriesData({ queryKey: ['todos'] }, updater)

Prefetching

메서드용도예시
prefetchQuery데이터 미리 가져오기 (Promise 반환)await queryClient.prefetchQuery({ queryKey: ['todos'], queryFn })
prefetchInfiniteQuery무한 쿼리 미리 가져오기await queryClient.prefetchInfiniteQuery({ queryKey, queryFn })
ensureQueryData캐시에 없으면 fetch, 있으면 반환const data = await queryClient.ensureQueryData({ queryKey, queryFn })

3. 주요 옵션

useQuery 옵션

옵션타입기본값설명
queryKeyunknown[]필수쿼리의 고유 키
queryFn() => Promise<T>필수데이터를 가져오는 함수
enabledbooleantruefalse면 쿼리 자동 실행 안 됨
staleTimenumber0데이터가 fresh 상태로 유지되는 시간 (ms)
gcTimenumber5분캐시 보관 시간 (구 cacheTime)
retryboolean | number | function3실패 시 재시도 횟수
retryDelaynumber | function지수 증가재시도 간격
refetchOnMountboolean | "always"true마운트 시 리페치 여부
refetchOnWindowFocusboolean | "always"true윈도우 포커스 시 리페치
refetchOnReconnectboolean | "always"true재연결 시 리페치
refetchIntervalnumber | falsefalse주기적 리페치 간격 (ms)
select(data: T) => Uundefined데이터 변환 함수
placeholderDataT | functionundefined로딩 중 표시할 임시 데이터
initialDataT | functionundefined초기 데이터 (캐시에 저장됨)

useMutation 옵션

옵션타입설명
mutationFn(variables) => Promise<T>mutation 실행 함수 (필수)
mutationKeyunknown[]mutation의 고유 키
onMutate(variables) => Promise<Context> | Contextmutation 시작 전 실행 (낙관적 업데이트)
onSuccess(data, variables, context) => void성공 시 콜백
onError(error, variables, context) => void실패 시 콜백
onSettled(data, error, variables, context) => void성공/실패 후 항상 실행
retryboolean | number재시도 횟수
retryDelaynumber | function재시도 간격

4. 상태 플래그

useQuery 상태

플래그타입설명
status'pending' | 'error' | 'success'쿼리 상태
fetchStatus'fetching' | 'paused' | 'idle'fetch 상태
isLoadingboolean처음 로딩 중 (isPending && isFetching)
isPendingboolean아직 데이터가 없음
isSuccessboolean성공적으로 데이터 로드
isErrorboolean에러 발생
isFetchingboolean현재 fetching 중 (백그라운드 포함)
isStaleboolean데이터가 stale 상태
isPlaceholderDatabooleanplaceholder 데이터 표시 중

useMutation 상태

플래그타입설명
status'idle' | 'pending' | 'error' | 'success'mutation 상태
isIdleboolean아직 실행 안 됨
isPendingboolean실행 중
isSuccessboolean성공
isErrorboolean실패
dataTmutation 결과 데이터
errorError에러 객체

5. 유틸리티 함수

함수용도예시
hashKeyqueryKey를 해시로 변환import { hashKey } from '@tanstack/react-query'
matchQuery쿼리 매칭filters에서 사용
matchMutationmutation 매칭filters에서 사용

6. 필터 옵션

invalidateQueries, refetchQueries 등에서 사용:

필터타입설명
queryKeyunknown[]특정 쿼리 키 매칭
exactboolean정확히 일치하는 쿼리만
predicate(query) => boolean커스텀 매칭 함수
type'active' | 'inactive' | 'all'쿼리 타입 필터
stalebooleanstale 상태 필터
fetchStatus'fetching' | 'paused' | 'idle'fetch 상태 필터

댓글 남기기