useQuery
const {
data,
dataUpdatedAt,
error,
errorUpdatedAt,
failureCount,
failureReason,
fetchStatus,
isError,
isFetched,
isFetchedAfterMount,
isFetching,
isInitialLoading,
isLoading,
isLoadingError,
isPaused,
isPending,
isPlaceholderData,
isRefetchError,
isRefetching,
isStale,
isSuccess,
refetch,
status,
} = useQuery(
{
queryKey,
queryFn,
gcTime,
enabled,
networkMode,
initialData,
initialDataUpdatedAt,
meta,
notifyOnChangeProps,
placeholderData,
queryKeyHashFn,
refetchInterval,
refetchIntervalInBackground,
refetchOnMount,
refetchOnReconnect,
refetchOnWindowFocus,
retry,
retryOnMount,
retryDelay,
select,
staleTime,
structuralSharing,
throwOnError,
},
queryClient
);Options
-
queryKey: unknown[]- Required
- 이 query에 사용할 query key입니다.
- query key는 안정적인 해시로 해시화됩니다. 자세한 내용은 Query Keys를 참조하세요.
- 이 키가 변경되면 쿼리는 자동으로 업데이트됩니다 (
enabled가false로 설정되지 않은 한).
-
queryFn: (context: QueryFunctionContext) => Promise<TData>- Required, 그러나 기본 query 함수가 정의되지 않은 경우에만. 기본 query 함수에 대한 자세한 내용은 Default Query Function을 참조하세요.
- 쿼리가 데이터를 요청할 때 사용하는 함수입니다.
- QueryFunctionContext를 인자로 받습니다.
- 데이터를 반환하는 promise를 반환해야 하며, 데이터는
undefined일 수 없습니다.
-
enabled: boolean | (query: Query) => boolean- 쿼리가 자동으로 실행되지 않도록 하려면
false로 설정합니다. - Dependent Queries에 사용할 수 있습니다.
- 쿼리가 자동으로 실행되지 않도록 하려면
-
networkMode: 'online' | 'always' | 'offlineFirst'- Optional
- 기본값은
'online'입니다. - Network Mode에서 자세한 내용을 확인하세요.
-
retry: boolean | number | (failureCount: number, error: TError) => booleanfalse로 설정하면 쿼리가 실패해도 기본적으로 재시도하지 않습니다.true로 설정하면 쿼리가 무한히 재시도합니다.number로 설정하면, 예를 들어3으로 설정하면, 실패한 쿼리는 실패 횟수가 해당 숫자에 도달할 때까지 재시도합니다.- 클라이언트에서는 기본값이
3, 서버에서는 기본값이0입니다.
-
retryOnMount: booleanfalse로 설정하면, 쿼리에 오류가 있을 경우 마운트 시 재시도하지 않습니다. 기본값은true입니다.
-
retryDelay: number | (retryAttempt: number, error: TError) => number- 이 함수는
retryAttempt정수와 실제 오류를 받아서 다음 시도 전의 지연 시간을 밀리초 단위로 반환합니다. attempt => Math.min(attempt > 1 ? 2 ** attempt * 1000 : 1000, 30 * 1000)와 같은 함수는 지수적 백오프를 적용합니다.attempt => attempt * 1000과 같은 함수는 선형 백오프를 적용합니다.
- 이 함수는
-
staleTime: number | ((query: Query) => number)- Optional
- 기본값은
0입니다. - 데이터가 오래된 것으로 간주되기까지의 시간입니다. 이 값은 정의된 hook에만 적용됩니다.
Infinity로 설정하면 데이터가 결코 오래된 것으로 간주되지 않습니다.- 함수로 설정하면, 그 함수는 쿼리와 함께 실행되어
staleTime을 계산합니다.
-
gcTime: number | Infinity- 기본값은
5 * 60 * 1000(5분) 또는 SSR 중Infinity입니다. - 사용되지 않거나 비활성화된 캐시 데이터가 메모리에 남아 있는 시간입니다. 쿼리의 캐시가 사용되지 않거나 비활성화되면, 이 시간 이후에 캐시 데이터가 가비지 컬렉션됩니다. 여러 가비지 컬렉션 시간이 지정된 경우, 가장 긴 시간이 사용됩니다.
- 참고: 최대 허용 시간은 약 24일입니다. 자세한 내용은 여기 (opens in a new tab)를 참조하세요.
Infinity로 설정하면 가비지 컬렉션이 비활성화됩니다.
- 기본값은
-
queryKeyHashFn: (queryKey: QueryKey) => string- Optional
- 지정된 경우, 이 함수는
queryKey를 문자열로 해시화하는 데 사용됩니다.
-
refetchInterval: number | false | ((query: Query) => number | false | undefined)- Optional
- 숫자로 설정하면, 모든 쿼리가 이 주기로 계속해서 재조회됩니다 (밀리초 단위).
- 함수로 설정하면, 이 함수는 쿼리와 함께 실행되어 주기를 계산합니다.
-
refetchIntervalInBackground: boolean- Optional
true로 설정하면,refetchInterval로 설정된 쿼리는 탭/창이 백그라운드에 있을 때도 계속해서 재조회됩니다.
-
refetchOnMount: boolean | "always" | ((query: Query) => boolean | "always")- Optional
- 기본값은
true입니다. true로 설정하면, 데이터가 오래된 경우 쿼리는 마운트 시 재조회됩니다.false로 설정하면, 마운트 시 쿼리가 재조회되지 않습니다."always"로 설정하면, 쿼리는 항상 마운트 시 재조회됩니다.- 함수로 설정하면, 이 함수는 쿼리와 함께 실행되어 값을 계산합니다.
-
refetchOnWindowFocus: boolean | "always" | ((query: Query) => boolean | "always")- Optional
- 기본값은
true입니다. true로 설정하면, 데이터가 오래된 경우 쿼리는 창 포커스 시 재조회됩니다.false로 설정하면, 창 포커스 시 쿼리가 재조회되지 않습니다."always"로 설정하면, 쿼리는 항상 창 포커스 시 재조회됩니다.- 함수로 설정하면, 이 함수는 쿼리와 함께 실행되어 값을 계산합니다.
-
refetchOnReconnect: boolean | "always" | ((query: Query) => boolean | "always")- Optional
- 기본값은
true입니다. true로 설정하면, 데이터가 오래된 경우 쿼리는 재연결 시 재조회됩니다.false로 설정하면, 재연결 시 쿼리가 재조회되지 않습니다."always"로 설정하면, 쿼리는 항상 재연결 시 재조회됩니다.- 함수로 설정하면, 이 함수는 쿼리와 함께 실행되어 값을 계산합니다.
-
notifyOnChangeProps: string[] | "all" | (() => string[] | "all" | undefined)- Optional
- 설정하면, 나열된 속성이 변경될 때만 컴포넌트가 다시 렌더링됩니다.
- 예를 들어,
['data', 'error']로 설정하면,data나error속성이 변경될 때만 컴포넌트가 다시 렌더링됩니다. "all"로 설정하면, 컴포넌트는 스마트 추적을 사용하지 않고 쿼리가 업데이트될 때마다 다시 렌더링됩니다.- 함수로 설정하면, 이 함수는 속성 목록을 계산하기 위해 실행됩니다.
- 기본적으로, 속성 접근이 추적되며, 추적된 속성이 변경될 때만 컴포넌트가 다시 렌더링됩니다.
-
select: (data: TData) => unknown- Optional
- 이 옵션을 사용하여 쿼리 함수가 반환하는 데이터의 일부를 변환하거나 선택할 수 있습니다. 이는 반환된
data값에 영향을 미치지만, 쿼리 캐시에 저장되는 데이터에는 영향을 미치지 않습니다. select함수는data가 변경되거나select함수 자체의 참조가 변경될 때만 실행됩니다. 최적화를 위해 함수를useCallback으로 감싸는 것이 좋습니다.
-
initialData: TData | () => TData- Optional
- 설정하면, 이 값이 쿼리 캐시의 초기 데이터로 사용됩니다 (쿼리가 아직 생성되거나 캐시되지 않은 경우).
- 함수로 설정하면, 함수는 공유/루트 쿼리 초기화 중 한 번 호출되며, 동기적으로
initialData를 반환해야 합니다. - 초기 데이터는 기본적으로 오래된 것으로 간주됩니다.
staleTime이 설정되지 않은 경우. initialData는 캐시에 저장됩니다.
-
initialDataUpdatedAt: number | (() => number | undefined)- Optional
- 설정하면, 이 값이
initialData가 마지막으로 업데이트된 시간 (밀리초 단위)으로 사용됩니다.
-
placeholderData: TData | (previousValue: TData | undefined; previousQuery: Query | undefined,) => TData- Optional
- 설정하면, 이 값이 쿼리가
pending상태일 때 이 특정 쿼리 옵저버의 자리 표시자 데이터로 사용됩니다. placeholderData는 캐시에 저장되지 않습니다.placeholderData에 함수를 제공하면, 첫 번째 인자로 이전에 관찰된 쿼리 데이터가 제공되고, 두 번째 인자로는 전체 이전 쿼리 인스턴스가 제공됩니다.
-
structuralSharing: boolean | (oldData: unknown | undefined, newData: unknown) => unknown)- Optional
- 기본값은
true입니다. false로 설정하면, 쿼리 결과 간의 구조적 공유가 비활성화됩니다.- 함수로 설정하면, 이전 데이터와 새 데이터 값이 이 함수로 전달되며, 이 함수는 쿼리를 위한 해결된 데이터를 조합해야 합니다. 이렇게 하면, 비직렬화 가능한 값을 포함한 데이터에서도 참조를 유지하여 성능을 개선할 수 있습니다.
-
throwOnError: undefined | boolean | (error: TError, query: Query) => boolean- 기본값은 전역 쿼리 설정의
throwOnError값, 즉undefined입니다. - 렌더링 단계에서 오류를 발생시키고 가장 가까운 오류 경계로 전파하려면
true로 설정합니다. false로 설정하면,suspense의 기본 오류 경계로 오류를 발생시키는 동작이 비활성화됩니다.- 함수로 설정하면, 오류와 쿼리가 전달되며, 함수는 오류를 오류 경계에 표시할지 (
true) 상태로 반환할지 (false)를 나타내는 boolean 값을 반환해야 합니다.
- 기본값은 전역 쿼리 설정의
-
meta: Record<string, unknown>- Optional
- 설정하면, 필요에 따라 쿼리 캐시 항목에 추가 정보를 저장합니다. 이는
query가 사용 가능한 모든 곳에서 접근할 수 있으며,queryFn에 제공되는QueryFunctionContext의 일부이기도 합니다.
-
queryClient?: QueryClient- 사용자 정의 QueryClient를 사용하려면 이 옵션을 사용합니다. 그렇지 않으면, 가장 가까운 컨텍스트에서 제공되는 QueryClient가 사용됩니다.
Returns
-
status: QueryStatus- 다음 중 하나입니다:
pending: 캐시된 데이터가 없고 쿼리 시도가 아직 완료되지 않았습니다.error: 쿼리 시도가 오류를 발생시켰습니다.error속성에는 시도된 가져오기에서 받은 오류가 포함됩니다.success: 쿼리가 오류 없이 응답을 받았고 데이터를 표시할 준비가 되었습니다. 쿼리의data속성에는 성공적인 가져오기에서 받은 데이터가 포함되며, 쿼리의enabled속성이false로 설정되어 있고 아직 가져오지 않은 경우data는 초기화 시 쿼리에 제공된 첫 번째initialData입니다.
- 다음 중 하나입니다:
-
isPending: boolean- 위의
status변수에서 파생된 boolean 값으로, 편의를 위해 제공됩니다.
- 위의
-
isSuccess: boolean- 위의
status변수에서 파생된 boolean 값으로, 편의를 위해 제공됩니다.
- 위의
-
isError: boolean- 위의
status변수에서 파생된 boolean 값으로, 편의를 위해 제공됩니다.
- 위의
-
isLoadingError: boolean- 쿼리가 처음으로 가져오는 동안 실패한 경우
true입니다.
- 쿼리가 처음으로 가져오는 동안 실패한 경우
-
isRefetchError: boolean- 쿼리를 재조회하는 동안 실패한 경우
true입니다.
- 쿼리를 재조회하는 동안 실패한 경우
-
data: TData- 기본값은
undefined입니다. - 쿼리에 대해 마지막으로 성공적으로 해결된 데이터입니다.
- 기본값은
-
dataUpdatedAt: number- 쿼리가 가장 최근에
status를"success"로 반환한 시간의 타임스탬프입니다.
- 쿼리가 가장 최근에
-
error: null | TError- 기본값은
null입니다. - 오류가 발생한 경우 쿼리의 오류 객체입니다.
- 기본값은
-
errorUpdatedAt: number- 쿼리가 가장 최근에
status를"error"로 반환한 시간의 타임스탬프입니다.
- 쿼리가 가장 최근에
-
isStale: boolean- 캐시된 데이터가 무효화되었거나 데이터가 주어진
staleTime보다 오래된 경우true입니다.
- 캐시된 데이터가 무효화되었거나 데이터가 주어진
-
isPlaceholderData: boolean- 데이터가 자리 표시자 데이터인 경우
true입니다.
- 데이터가 자리 표시자 데이터인 경우
-
isFetched: boolean- 쿼리가 가져와진 경우
true입니다.
- 쿼리가 가져와진 경우
-
isFetchedAfterMount: boolean- 컴포넌트가 마운트된 후 쿼리가 가져와진 경우
true입니다. - 이 속성은 이전에 캐시된 데이터를 표시하지 않도록 하는 데 사용할 수 있습니다.
- 컴포넌트가 마운트된 후 쿼리가 가져와진 경우
-
fetchStatus: FetchStatusfetching:queryFn이 실행 중일 때, 즉 초기pending상태 및 백그라운드 재조회가 포함됩니다.paused: 쿼리가 가져오기를 원했지만paused상태입니다.idle: 쿼리가 가져오지 않고 있습니다.- 자세한 내용은 Network Mode를 참조하세요.
-
isFetching: boolean- 위의
fetchStatus변수에서 파생된 boolean 값으로, 편의를 위해 제공됩니다.
- 위의
-
isPaused: boolean- 위의
fetchStatus변수에서 파생된 boolean 값으로, 편의를 위해 제공됩니다.
- 위의
-
isRefetching: boolean- 백그라운드 재조회가 진행 중일 때
true입니다. 초기pending상태는 포함되지 않습니다. isFetching && !isPending과 동일합니다.
- 백그라운드 재조회가 진행 중일 때
-
isLoading: boolean- 쿼리의 첫 번째 가져오기가 진행 중일 때
true입니다. isFetching && isPending과 동일합니다.
- 쿼리의 첫 번째 가져오기가 진행 중일 때
-
isInitialLoading: boolean- deprecated
isLoading의 별칭으로, 다음 주요 버전에서 제거됩니다.
-
failureCount: number- 쿼리의 실패 횟수입니다.
- 쿼리가 실패할 때마다 증가합니다.
- 쿼리가 성공하면
0으로 리셋됩니다.
-
failureReason: null | TError- 쿼리 재시도의 실패 원인입니다.
- 쿼리가 성공하면
null로 리셋됩니다.
-
errorUpdateCount: number- 모든 오류의 합계입니다.
-
refetch: (options: { throwOnError: boolean, cancelRefetch: boolean }) => Promise<UseQueryResult>- 쿼리를 수동으로 재조회하는 함수입니다.
- 쿼리가 오류가 발생하면 오류는 기록만 됩니다. 오류를 발생시키려면
throwOnError: true옵션을 전달합니다. cancelRefetch?: boolean- 기본값은
true입니다.- 기본적으로 현재 실행 중인 요청은 새 요청이 발생하기 전에 취소됩니다.
false로 설정하면, 이미 요청이 실행 중인 경우 재조회가 수행되지 않습니다.
- 기본값은