streamedQuery
streamedQuery는 AsyncIterable에서 데이터를 스트리밍하는 쿼리 함수를 생성하는 헬퍼 함수입니다. 데이터는 수신된 모든 청크의 Array가 됩니다. 쿼리는 첫 번째 데이터 청크를 수신할 때까지 pending 상태에 있다가 그 후 success로 전환됩니다. 쿼리는 스트림이 끝날 때까지 fetchStatus fetching 상태를 유지합니다.
streamedQuery의 실제 작동 방식을 확인하려면 GitHub의 examples/react/chat 디렉터리에 있는 채팅 예제를 살펴보세요.
import { experimental_streamedQuery as streamedQuery } from '@tanstack/react-query'
const query = queryOptions({
queryKey: ['data'],
queryFn: streamedQuery({
streamFn: fetchDataInChunks,
}),
})
참고: 커뮤니티의 피드백을 수집하고자 하므로 현재
streamedQuery는experimental로 표시되어 있습니다. API를 사용해 보았고 전달할 피드백이 있다면 이 GitHub 토론에 남겨 주세요.
옵션
streamFn: (context: QueryFunctionContext) => Promise<AsyncIterable<TData>>- Required
- 스트리밍할 데이터가 담긴 AsyncIterable의 Promise를 반환하는 함수입니다.
- QueryFunctionContext를 받습니다
refetchMode?: 'append' | 'reset' | 'replace'- 선택 사항
- 다시 가져오기를 처리하는 방식을 정의합니다.
- 기본값은
'reset'입니다 'reset'로 설정하면 쿼리는 모든 데이터를 지우고pending상태로 돌아갑니다.'append'으로 설정하면 데이터가 기존 데이터에 추가됩니다.'replace'로 설정하면 스트림이 종료된 후 모든 데이터가 캐시에 기록됩니다.
reducer?: (accumulator: TData, chunk: TQueryFnData) => TData- 선택 사항
- 스트리밍된 청크(
TQueryFnData)를 최종 데이터 형태(TData)로 축약합니다. - 기본값:
TData가 배열이면 각 청크를 누산기의 끝에 추가합니다. TData가 배열이 아니면 사용자 지정reducer를 제공해야 합니다.
initialValue?: TData = TQueryFnData- 선택 사항
- 첫 번째 청크를 가져오는 동안 사용할 초기 데이터를 정의하며, 스트림이 값을 생성하지 않을 때도 반환됩니다.
- 사용자 지정
reducer가 제공되면 필수입니다. - 기본값은 빈 배열입니다.