본문으로 건너뛰기

useSuspenseQuery

function useSuspenseQuery<TQueryFnData, TError, TData, TQueryKey>(options, queryClient?): UseSuspenseQueryResult<TData, TError>;

정의 위치: preact-query/src/useSuspenseQuery.ts:57

useSuspenseQuery의 옵션은 throwOnError, enabled 및 다음 항목을 제외하면 useQuery의 옵션과 동일합니다: placeholderData.

주의: 취소가 작동하지 않습니다.

타입 매개변수

TQueryFnData

TQueryFnData = unknown

TError

TError = Error

TData

TData = TQueryFnData

TQueryKey

TQueryKey extends readonly unknown[] = readonly unknown[]

매개변수

옵션

UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>

사용할 UseSuspenseQueryOptions입니다 — 위에 나열된 항목을 제외하면 useQuery와 동일한 옵션입니다.

queryClient?

QueryClient

사용자 지정 QueryClient를 사용하려면 이를 사용합니다. 그렇지 않으면 가장 가까운 컨텍스트의 항목이 사용됩니다 사용됩니다.

반환값

UseSuspenseQueryResult<TData, TError>

useQuery와 동일한 객체이지만, data가 정의되어 있음이 보장됩니다, isPlaceholderData 누락되어 있으며, statussuccess 또는 error입니다(파생 플래그도 그에 따라 설정됩니다).

비고

동일한 컴포넌트에서 여러 번 호출한 useSuspenseQuery는 직렬로 일시 중단되어 요청이 워터폴 — 각각이 이행될 때까지 렌더링을 차단하므로 그때까지 다음 항목은 가져오기를 시작조차 하지 않습니다. 컴포넌트에 suspense를 사용하는 쿼리가 둘 이상 있어 이들이 다음과 같이 되도록 하려면 대신 useSuspenseQueries를 사용합니다. 병렬로 가져옵니다.

예시

import { Suspense } from 'preact/compat'
import { useSuspenseQuery } from '@tanstack/preact-query'

function Posts() {
// `data` is guaranteed to be defined here — no `isPending` check needed.
const { data, isFetching } = useSuspenseQuery({
queryKey: ['posts'],
queryFn: fetchPosts,
})

return (
<div>
<h1>Posts {isFetching ? '(refreshing...)' : null}</h1>
<ul>
{data.map((post) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
</div>
)
}

function App() {
return (
<Suspense fallback={<h1>Loading posts...</h1>}>
<Posts />
</Suspense>
)
}