dehydrate
dehydrate
creates a frozen representation of a cache
that can later be hydrated with Hydrate
, useHydrate
, or hydrate
. This is useful for passing prefetched queries from server to client or persisting queries to localStorage or other persistent locations. It only includes currently successful queries by default.
import { dehydrate } from '@tanstack/react-query'
const dehydratedState = dehydrate(queryClient, { shouldDehydrateQuery,})
Options
client: QueryClient
queryClient
that should be dehydratedoptions: DehydrateOptions
dehydrateMutations: boolean
dehydrateQueries: boolean
shouldDehydrateMutation: (mutation: Mutation) => boolean
true
to include this mutation in dehydration, or false
otherwisedefaultShouldDehydrateMutation
as part of the return statementshouldDehydrateQuery: (query: Query) => boolean
true
to include this query in dehydration, or false
otherwiseshouldDehydrateQuery: () => true
to include all queriesdefaultShouldDehydrateQuery
as part of the return statementReturns
dehydratedState: DehydratedState
queryClient
at a later pointSome storage systems (such as browser Web Storage API) require values to be JSON serializable. If you need to dehydrate values that are not automatically serializable to JSON (like Error
or undefined
), you have to serialize them for yourself. Since only successful queries are included per default, to also include Errors
, you have to provide shouldDehydrateQuery
, e.g.:
// serverconst state = dehydrate(client, { shouldDehydrateQuery: () => true }) // to also include Errorsconst serializedState = mySerialize(state) // transform Error instances to objects
// clientconst state = myDeserialize(serializedState) // transform objects back to Error instanceshydrate(client, state)
hydrate
hydrate
adds a previously dehydrated state into a cache
.
import { hydrate } from '@tanstack/react-query'
hydrate(queryClient, dehydratedState, options)
Options
client: QueryClient
queryClient
to hydrate the state intodehydratedState: DehydratedState
options: HydrateOptions
defaultOptions: DefaultOptions
mutations: MutationOptions
The default mutation options to use for the hydrated mutations.queries: QueryOptions
The default query options to use for the hydrated queries.context?: React.Context<QueryClient | undefined>
defaultContext
will be used.If the queries included in dehydration already exist in the queryCache, hydrate
does not overwrite them and they will be silently discarded.
useHydrate
useHydrate
adds a previously dehydrated state into the queryClient
that would be returned by useQueryClient()
. If the client already contains data, the new queries will be intelligently merged based on update timestamp.
import { useHydrate } from '@tanstack/react-query'
useHydrate(dehydratedState, options)
Options
dehydratedState: DehydratedState
options: HydrateOptions
defaultOptions: QueryOptions
context?: React.Context<QueryClient | undefined>
defaultContext
will be used.Hydrate
Hydrate
wraps useHydrate
into component. Can be useful when you need hydrate in class component or need hydrate on same level where QueryClientProvider
rendered.
import { Hydrate } from '@tanstack/react-query'
function App() { return <Hydrate state={dehydratedState}>...</Hydrate>}
Options
state: DehydratedState
options: HydrateOptions
defaultOptions: QueryOptions
context?: React.Context<QueryClient | undefined>
defaultContext
will be used.“This course is the best way to learn how to use React Query in real-world applications.”—Tanner LinsleyCheck it out