dehydrate 创建一个冻结的 cache 表示,该表示稍后可以使用 HydrationBoundary 或 hydrate 进行hydration。这对于将预取查询从服务器传递到客户端或将查询持久化到 localStorage 或其他持久化位置非常有用。默认情况下,它只包含当前成功的查询。
import { dehydrate } from '@tanstack/vue-query'
const dehydratedState = dehydrate(queryClient, {
shouldDehydrateQuery,
shouldDehydrateMutation,
})
import { dehydrate } from '@tanstack/vue-query'
const dehydratedState = dehydrate(queryClient, {
shouldDehydrateQuery,
shouldDehydrateMutation,
})
选项
Returns (返回)
某些存储系统(例如浏览器 Web Storage API)要求值是 JSON 可序列化的。如果您需要 dehydration 值不是自动可序列化到 JSON(例如 Error 或 undefined),您必须自行序列化它们。由于默认情况下只包含成功的查询,要也包含 Errors,您必须提供 shouldDehydrateQuery,例如:
// server
const state = dehydrate(client, { shouldDehydrateQuery: () => true }) // to also include Errors
const serializedState = mySerialize(state) // transform Error instances to objects
// client
const state = myDeserialize(serializedState) // transform objects back to Error instances
hydrate(client, state)
// server
const state = dehydrate(client, { shouldDehydrateQuery: () => true }) // to also include Errors
const serializedState = mySerialize(state) // transform Error instances to objects
// client
const state = myDeserialize(serializedState) // transform objects back to Error instances
hydrate(client, state)
hydrate 将先前脱水状态添加到 cache 中。
import { hydrate } from '@tanstack/vue-query'
hydrate(queryClient, dehydratedState, options)
import { hydrate } from '@tanstack/vue-query'
hydrate(queryClient, dehydratedState, options)
选项
如果尝试 hydration 的查询已存在于 queryCache 中,hydrate 将仅在数据比缓存中存在的数据新时覆盖它们。否则,它将 **不会** 被应用。