框架
版本

streamedQuery

streamedQuery 是一个辅助函数,用于创建一个从 AsyncIterable 流式传输数据的查询函数。数据将是接收到的所有块的数组。查询将在接收到第一个数据块之前处于 pending 状态,但在此之后将进入 success 状态。查询将保持 fetching 的 fetchStatus 直到流结束。

要查看 streamedQuery 的实际效果,请查看我们在 GitHub 上的 examples/react/chat 目录中的聊天示例。

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

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

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

注意:streamedQuery 目前标记为 experimental,因为我们希望收集社区的反馈。如果您尝试过该 API 并有反馈给我们,请在此 GitHub 讨论中提供。

选项

  • queryFn: (context: QueryFunctionContext) => Promise<AsyncIterable<TData>>
    • 必需
    • 返回要流式传输的数据的 AsyncIterable 的 Promise 的函数。
    • 接收一个 QueryFunctionContext
  • refetchMode?: 'append' | 'reset' | 'replace
    • 可选
    • 定义如何处理重新获取。
    • 默认为 'reset'
    • 设置为 'reset' 时,查询将擦除所有数据并返回到 pending 状态。
    • 设置为 'append' 时,数据将附加到现有数据。
    • 设置为 'replace' 时,所有数据将在流结束后写入缓存。
  • maxChunks?: number
    • 可选
    • 要保留在缓存中的最大块数。
    • 默认为 undefined,表示将保留所有块。
    • 如果为 undefined0,则块数不受限制。
    • 如果块数超过此数字,则将删除最旧的块。