dehydrate
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,则保留原始错误。 |
返回值
脱水后的状态,包含所选的 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)