Framework
Version

streamedQuery

streamedQuery ist eine Hilfsfunktion zur Erstellung einer Query-Funktion, die Daten von einem AsyncIterable streamt. Die Daten werden ein Array aller empfangenen Chunks sein. Die Query befindet sich im Status pending, bis der erste Daten-Chunk empfangen wird, danach wechselt sie zu success. Die Query bleibt im Fetch-Status fetching, bis der Stream endet.

Um streamedQuery in Aktion zu sehen, werfen Sie einen Blick auf unser Chat-Beispiel im Verzeichnis examples/react/chat auf GitHub.

tsx
import { experimental_streamedQuery as streamedQuery } from '@tanstack/react-query'

const query = queryOptions({
  queryKey: ['data'],
  queryFn: streamedQuery({
    streamFn: fetchDataInChunks,
  }),
})
import { experimental_streamedQuery as streamedQuery } from '@tanstack/react-query'

const query = queryOptions({
  queryKey: ['data'],
  queryFn: streamedQuery({
    streamFn: fetchDataInChunks,
  }),
})

Hinweis: streamedQuery ist derzeit als experimentell gekennzeichnet, da wir Feedback von der Community sammeln möchten. Wenn Sie die API ausprobiert haben und Feedback für uns haben, hinterlassen Sie es bitte in dieser GitHub-Diskussion.

Optionen

  • streamFn: (context: QueryFunctionContext) => Promise<AsyncIterable<TData>>
    • Erforderlich
    • Die Funktion, die ein Promise eines AsyncIterable mit zu streamenden Daten zurückgibt.
    • Empfängt einen QueryFunctionContext
  • refetchMode?: 'append' | 'reset' | 'replace'
    • Optional
    • Definiert, wie Refetches behandelt werden.
    • Standard ist 'reset'
    • Wenn auf 'reset' gesetzt, löscht die Query alle Daten und kehrt in den Status pending zurück.
    • Wenn auf 'append' gesetzt, werden Daten an bestehende Daten angehängt.
    • Wenn auf 'replace' gesetzt, werden alle Daten in den Cache geschrieben, sobald der Stream endet.
  • reducer?: (accumulator: TData, chunk: TQueryFnData) => TData
    • Optional
    • Reduziert gestreamte Chunks (TQueryFnData) in die endgültige Datenform (TData).
    • Standard: Hängt jeden Chunk am Ende des Akkumulators an, wenn TData ein Array ist.
    • Wenn TData kein Array ist, müssen Sie einen benutzerdefinierten reducer bereitstellen.
  • initialValue?: TData = TQueryFnData
    • Optional
    • Definiert die anfänglichen Daten, die verwendet werden, während der erste Chunk abgerufen wird.
    • Dies ist obligatorisch, wenn ein benutzerdefinierter reducer bereitgestellt wird.
    • Standard ist ein leeres Array.