为什么我不能使用 QueryCache 从 queryClient.prefetchQuery 获取 "cache"
Why can't I use QueryCache to get at "cache" from queryClient.prefetchQuery
因此,我正在尝试访问我在 SSR 页面中设置的缓存:queryClient.prefetchQuery。
我在水合的SSR端使用这个:
ala:
await queryClient.prefetchQuery(['userSesion'], () => fetchUserSession());
// 这是包装我的 _app.js 文件
<QueryClientProvider client={queryClient}>
<Hydrate state={props.dehydratedState}>
然后在客户端,我试图获取这个“缓存”。
const queryCache = new QueryCache();
queryCache.find("userSession"); // <--- This is undefined/empty
也尝试过:没有运气
queryClient.getQueryData('userSession'))
queryClient.getQueryState('userSession'))
请注意,我在工具中“看到”了 data/cache,为什么我看不到它?
因为您创建了一个 new Cache
,并且该缓存没有连接到 queryClient。如果你想获取缓存,你可以通过:
const queryClient = useQueryClient()
const queryCache = queryClient.getQueryCache()
话虽如此,应该很少需要直接与 QueryCache
互动。 QueryClient
公开了与缓存交互的函数,如果您有一个组件需要缓存中的数据,那么最好只在该组件中调用 useQuery
。如果有数据,它将立即从缓存中为您提供数据,如果数据被认为是陈旧的,它将执行后台重新获取。
因此,我正在尝试访问我在 SSR 页面中设置的缓存:queryClient.prefetchQuery。
我在水合的SSR端使用这个:
ala:
await queryClient.prefetchQuery(['userSesion'], () => fetchUserSession());
// 这是包装我的 _app.js 文件
<QueryClientProvider client={queryClient}>
<Hydrate state={props.dehydratedState}>
然后在客户端,我试图获取这个“缓存”。
const queryCache = new QueryCache();
queryCache.find("userSession"); // <--- This is undefined/empty
也尝试过:没有运气
queryClient.getQueryData('userSession'))
queryClient.getQueryState('userSession'))
请注意,我在工具中“看到”了 data/cache,为什么我看不到它?
因为您创建了一个 new Cache
,并且该缓存没有连接到 queryClient。如果你想获取缓存,你可以通过:
const queryClient = useQueryClient()
const queryCache = queryClient.getQueryCache()
话虽如此,应该很少需要直接与 QueryCache
互动。 QueryClient
公开了与缓存交互的函数,如果您有一个组件需要缓存中的数据,那么最好只在该组件中调用 useQuery
。如果有数据,它将立即从缓存中为您提供数据,如果数据被认为是陈旧的,它将执行后台重新获取。