프로젝트로 react-query 의 v5버전을 쓰게 되었다.
근데 공식 번역이 없음
영어 문서인 채로 읽는 것이 가장 좋지만... 빠른 이해를 위해 한번 번역해 기록해 두기로
https://tanstack.com/query/v5/docs/framework/react/reference/useQuery
useQuery | TanStack Query React Docs
tsx const { data, dataUpdatedAt, error, errorUpdatedAt, failureCount, failureReason, fetchStatus, isError, isFetched, isFetchedAfterMount, isFetching, isInitialLoading, isLoading, isLoadingError, isPa...
tanstack.com
파라미터1 (옵션)
queryKey: unknown[]
필수
이 쿼리에 사용할 쿼리 키입니다.
쿼리 키는 안정적인 해시로 변환됩니다. 자세한 내용은 Query Keys를 참고하세요.
이 키가 변경되면 쿼리는 자동으로 업데이트됩니다(단, enabled가 false로 설정되지 않은 경우).
queryFn: (context: QueryFunctionContext) => Promise<TData>
필수 (기본 쿼리 함수가 정의되지 않은 경우)
쿼리가 데이터를 요청할 때 사용할 함수입니다.
QueryFunctionContext를 인자로 받습니다.
반환값은 데이터가 해결되거나 오류가 발생하는 Promise여야 합니다. 반환 데이터는 undefined일 수 없습니다.
enabled: boolean | (query: Query) => boolean
자동 실행을 비활성화하려면 false로 설정하세요.
종속 쿼리(Dependent Queries)에서 사용할 수 있습니다.
networkMode: 'online' | 'always' | 'offlineFirst'
선택 사항
기본값은 'online'입니다.
자세한 내용은 Network Mode를 참고하세요.
retry: boolean | number | (failureCount: number, error: TError) => boolean
기본값: 클라이언트에서는 3, 서버에서는 0
- false: 실패한 쿼리를 기본적으로 재시도하지 않습니다.
- true: 실패한 쿼리를 무한히 재시도합니다.
- 숫자: 예를 들어 3으로 설정하면, 실패한 쿼리를 세 번 재시도합니다.
retryOnMount: boolean
기본값: true
false로 설정하면 오류가 있는 경우 마운트 시 쿼리를 재시도하지 않습니다.
retryDelay: number | (retryAttempt: number, error: TError) => number
다음 재시도까지의 지연 시간을 밀리초 단위로 설정합니다.
- 예: attempt => Math.min(attempt > 1 ? 2 ** attempt * 1000 : 1000, 30 * 1000)는 지수적 백오프를 적용합니다.
- 예: attempt => attempt * 1000는 선형 백오프를 적용합니다.
staleTime: number | ((query: Query) => number)
선택 사항
기본값: 0
데이터가 오래되었다고 간주되기 전의 시간(밀리초 단위)입니다.
- Infinity로 설정하면 데이터는 절대 오래되지 않습니다.
- 함수로 설정하면 쿼리를 사용하여 staleTime을 계산합니다.
gcTime: number | Infinity
기본값: 5분 (SSR 시 Infinity)
미사용 또는 비활성 캐시 데이터가 메모리에 남아 있는 시간(밀리초 단위)입니다.
- Infinity로 설정하면 가비지 수집을 비활성화합니다.
참고: 최대 허용 시간은 약 24일입니다.
queryKeyHashFn: (queryKey: QueryKey) => string
선택 사항
지정된 경우, 쿼리 키를 해시 문자열로 변환하는 데 사용됩니다.
refetchInterval: number | false | ((query: Query) => number | false | undefined)
선택 사항
- 숫자: 지정된 주기(밀리초)마다 쿼리를 다시 가져옵니다.
- 함수: 함수가 쿼리를 사용하여 주기를 계산합니다.
refetchIntervalInBackground: boolean
선택 사항
true로 설정하면, 탭/창이 백그라운드에 있을 때도 쿼리를 계속 다시 가져옵니다.
refetchOnMount: boolean | "always" | ((query: Query) => boolean | "always")
선택 사항
기본값: true
- true: 데이터가 오래되었으면 마운트 시 쿼리를 다시 가져옵니다.
- false: 마운트 시 쿼리를 다시 가져오지 않습니다.
- "always": 항상 마운트 시 쿼리를 다시 가져옵니다.
refetchOnWindowFocus: boolean | "always" | ((query: Query) => boolean | "always")
선택 사항
기본값: true
- true: 데이터가 오래되었으면 창 포커스 시 쿼리를 다시 가져옵니다.
- false: 창 포커스 시 쿼리를 다시 가져오지 않습니다.
- "always": 항상 창 포커스 시 쿼리를 다시 가져옵니다.
refetchOnReconnect: boolean | "always" | ((query: Query) => boolean | "always")
선택 사항
기본값: true
- true: 데이터가 오래되었으면 다시 연결 시 쿼리를 다시 가져옵니다.
- false: 다시 연결 시 쿼리를 다시 가져오지 않습니다.
- "always": 항상 다시 연결 시 쿼리를 다시 가져옵니다.
notifyOnChangeProps: string[] | "all" | (() => string[] | "all" | undefined)
선택 사항
특정 속성이 변경될 때만 컴포넌트를 다시 렌더링합니다.
- 예: ['data', 'error']로 설정하면 data나 error가 변경될 때만 렌더링합니다.
- "all"로 설정하면 스마트 추적을 비활성화하고 쿼리가 업데이트될 때마다 다시 렌더링합니다.
select: (data: TData) => unknown
선택 사항
- 이 옵션은 쿼리 함수에서 반환된 데이터의 일부를 변환하거나 선택하는 데 사용됩니다.
- 반환되는 데이터 값에 영향을 주지만, 쿼리 캐시에 저장되는 데이터에는 영향을 주지 않습니다.
- select 함수는 데이터가 변경되거나 함수 참조가 변경될 때만 실행됩니다.
- 최적화를 위해, useCallback으로 함수를 감싸는 것이 권장됩니다.
initialData: TData | () => TData
선택 사항
- 설정된 경우, 이 값이 쿼리 캐시의 초기 데이터로 사용됩니다. (쿼리가 생성되거나 캐시되지 않은 경우에만)
- 함수로 설정된 경우, 공유/루트 쿼리 초기화 중 한 번 호출되며, initialData를 동기적으로 반환해야 합니다.
- 초기 데이터는 기본적으로 오래된(stale) 상태로 간주되지만, staleTime이 설정된 경우는 예외입니다.
- initialData는 캐시에 저장됩니다.
initialDataUpdatedAt: number | (() => number | undefined)
선택 사항
- 설정된 경우, 이 값이 초기 데이터가 마지막으로 업데이트된 시간을 나타내는 밀리초 단위의 값으로 사용됩니다.
placeholderData: TData | (previousValue: TData | undefined; previousQuery: Query | undefined) => TData
선택 사항
- 설정된 경우, 쿼리가 대기 상태(pending)일 동안 해당 쿼리 옵저버의 플레이스홀더 데이터로 사용됩니다.
- placeholderData는 캐시에 저장되지 않습니다.
- 함수로 제공된 경우, 첫 번째 인수로 이전에 조회된 쿼리 데이터를, 두 번째 인수로 완전한 이전 쿼리 객체를 받습니다.
structuralSharing: boolean | (oldData: unknown | undefined, newData: unknown) => unknown)
선택 사항
- 기본값은 true입니다.
- false로 설정된 경우, 쿼리 결과 간의 구조적 공유가 비활성화됩니다.
- 함수로 설정된 경우, 이전 데이터와 새 데이터 값을 전달받아 이를 결합한 결과를 반환해야 합니다. 이를 통해 직렬화할 수 없는 값이 포함된 경우에도 성능을 개선할 수 있습니다.
throwOnError: undefined | boolean | (error: TError, query: Query) => boolean
선택 사항
- 기본값은 글로벌 쿼리 설정의 throwOnError 값(기본적으로 undefined)입니다.
- true로 설정하면, 렌더링 단계에서 오류가 발생 시 이를 인근 오류 경계로 전파합니다.
- false로 설정하면, Suspense의 기본 동작(오류를 오류 경계로 전파)을 비활성화합니다.
- 함수로 설정된 경우, 오류와 쿼리를 전달받아 오류 경계에서 오류를 표시할지(true) 또는 상태로 반환할지(false)를 결정해야 합니다.
meta: Record<string, unknown>
선택 사항
- 설정된 경우, 쿼리 캐시 항목에 추가 정보를 저장합니다.
- 이는 쿼리에서 접근 가능하며, queryFn에 제공되는 QueryFunctionContext의 일부로도 사용할 수 있습니다.
Parameter2 (QueryClient)
queryClient?: QueryClient
- 사용자 정의 QueryClient를 사용하려면 설정하십시오. 그렇지 않으면 가장 가까운 컨텍스트의 클라이언트가 사용됩니다.
반환값
status: QueryStatus
- 다음 값 중 하나를 반환합니다:
- pending: 캐시된 데이터가 없고 쿼리가 완료되지 않았을 때.
- error: 쿼리 시도가 오류로 끝났을 때. 오류는 error 속성에 포함됩니다.
- success: 오류 없이 응답을 수신한 경우.
isPending: boolean
- 위의 status에서 파생된 boolean 값입니다.
isSuccess: boolean
- status에서 파생된 boolean 값입니다.
isError: boolean
- status에서 파생된 boolean 값입니다.
isLoadingError: boolean
- 쿼리가 첫 번째 요청 중 실패했을 때 true입니다.
isRefetchError: boolean
- 다시 요청하는 동안 실패한 경우 true입니다.
data: TData
- 기본값은 undefined입니다.
- 쿼리의 마지막으로 성공적으로 해결된 데이터입니다.
dataUpdatedAt: number
- 쿼리가 마지막으로 성공 상태를 반환한 시간의 타임스탬프입니다.
error: null | TError
- 기본값은 null입니다.
- 쿼리 중 발생한 오류 객체입니다.
errorUpdatedAt: number
- 쿼리가 마지막으로 오류 상태를 반환한 시간의 타임스탬프입니다.
isStale: boolean
- 캐시의 데이터가 무효화되었거나, staleTime보다 오래된 경우 true입니다.
isPlaceholderData: boolean
- 표시된 데이터가 플레이스홀더 데이터인 경우 true입니다.
isFetched: boolean
- 쿼리가 실행된 경우 true입니다.
fetchStatus: FetchStatus
- 상태:
- fetching: 쿼리 함수가 실행 중일 때.
- paused: 쿼리가 데이터를 요청했지만 일시 중지된 경우.
- idle: 쿼리가 데이터를 요청하지 않을 때.
failureCount: number
- 쿼리 실패 횟수입니다. 성공 시 0으로 초기화됩니다.
refetch: (options: { throwOnError: boolean, cancelRefetch: boolean }) => Promise<UseQueryResult>
- 쿼리를 수동으로 다시 요청하는 함수입니다.
promise: Promise<TData>
- 쿼리 데이터를 포함한 안정적인 Promise 객체입니다. experimental_prefetchInRender 플래그를 활성화해야 합니다.
'REACT > React-개념정리' 카테고리의 다른 글
[ Vite + React + Vscode ] 절대 경로 별칭 @로 자동 import 하기 (0) | 2025.01.13 |
---|---|
[React] 모바일에서 100vh 맞추기 (0) | 2023.01.19 |
[React] React Templates (0) | 2022.12.06 |
[ React ] 실전에서 사용하는 실전형 문법 STEP 정리 (0) | 2022.11.17 |