译零 TransZero · TanStack Query 中文文档
主站

dehydrate

更新于 2026-11-02 Preact 查看英文原文 ↗
TypeScript
1function dehydrate(client: QueryClient, options?: DehydrateOptions): DehydratedState;

定义于:packages/query-core/src/hydration.ts:245

将 QueryClient 的缓存(查询和修改)序列化为一个纯 JavaScript 对象 DehydratedState,通常用于嵌入服务端渲染的 HTML 标记中,并随后通过 hydrate 在客户端 QueryClient 中恢复。哪些查询/修改被包含在内,以及其数据/错误如何被转换,均由 options 控制;若未指定,则回退至客户端的 dehydrate 默认选项;最终回退至 defaultShouldDehydrateQuery / defaultShouldDehydrateMutation。

参数

client

QueryClient

待脱水的缓存所属的客户端。

options?

DehydrateOptions = {}

控制哪些查询和修改被包含,以及其数据和错误如何被转换。每个选项均回退至客户端的 defaultOptions.dehydrate。

options 的属性

属性 类型 描述
serializeData? TransformerFn 在查询脱水前转换其 data。适用于非 JSON 可序列化的数据。
shouldDehydrateMutation? (mutation: Mutation) => boolean 判断给定 Mutation 是否应被脱水的谓词函数。默认为 defaultShouldDehydrateMutation。
shouldDehydrateQuery? (query: Query) => boolean 判断给定 Query 是否应被脱水的谓词函数。默认为 defaultShouldDehydrateQuery。
shouldRedactErrors? (error: unknown) => boolean 判断查询错误是否应在脱水前被屏蔽的谓词函数。除非提供该函数且对给定错误返回 false,否则错误将被屏蔽(替换为通用 Error('redacted'));若返回 false,则保留原始错误。

返回值

DehydratedState

脱水后的状态,包含所选的 queries 和 mutations。

返回值属性

属性 类型 描述
mutations DehydratedMutation[] 脱水后的修改,默认仅包含已暂停的修改。
queries DehydratedQuery[] 脱水后的查询,默认仅包含成功的查询。

示例

TypeScript
1const queryClient = new QueryClient()2 3await queryClient.prefetchQuery({4  queryKey: ['posts'],5  queryFn: getPosts,6})7 8const dehydratedState = dehydrate(queryClient)

本页为 TanStack Query 文档(Preact 版)的非官方中文翻译,原文由上游团队维护,遵循 MIT 许可。 译文如有偏差,以英文原文为准。

译自上游 59d11de