dehydrate 创建缓存的一个冻结表示,稍后可以使用 HydrationBoundary 或 hydrate 进行水合。这对于将预取查询从服务器传递到客户端或将查询持久化到 localStorage 或其他持久位置非常有用。默认情况下,它只包含当前成功的查询。
import { dehydrate } from '@tanstack/solid-query'
const dehydratedState = dehydrate(queryClient, {
shouldDehydrateQuery,
shouldDehydrateMutation,
})
import { dehydrate } from '@tanstack/solid-query'
const dehydratedState = dehydrate(queryClient, {
shouldDehydrateQuery,
shouldDehydrateMutation,
})
选项
Returns (返回)
某些存储系统(例如浏览器 Web Storage API)要求值是 JSON 可序列化的。如果您需要对无法自动序列化为 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/solid-query'
hydrate(queryClient, dehydratedState, options)
import { hydrate } from '@tanstack/solid-query'
hydrate(queryClient, dehydratedState, options)
选项
如果尝试水合的查询已存在于 queryCache 中,hydrate 将仅在数据比缓存中存在的数据新时覆盖它们。否则,它将 不 被应用。