@@ -82,11 +82,14 @@ export default (context) => {
82
82
const queryClient = new QueryClient ({
83
83
defaultOptions: { queries: { staleTime: 5000 } },
84
84
})
85
- const options = { queryClient }
86
85
87
- Vue .use (VueQueryPlugin, options)
86
+ if (process .server ) {
87
+ context .ssrContext .VueQuery = queryClient
88
+ }
88
89
89
90
if (process .client ) {
91
+ Vue .use (VueQueryPlugin, { queryClient })
92
+
90
93
if (context .nuxtState && context .nuxtState .vueQueryState ) {
91
94
hydrate (queryClient, context .nuxtState .vueQueryState )
92
95
}
@@ -100,7 +103,7 @@ Add this plugin to your `nuxt.config.js`
100
103
module .exports = {
101
104
...
102
105
plugins: [' ~/plugins/vue-query.js' ],
103
- };
106
+ }
104
107
```
105
108
106
109
Now you are ready to prefetch some data in your pages with ` onServerPrefetch ` .
@@ -110,7 +113,7 @@ Now you are ready to prefetch some data in your pages with `onServerPrefetch`.
110
113
- Prefetch all the queries that you need with ` queryClient.prefetchQuery ` or ` suspense `
111
114
- Dehydrate ` queryClient ` to the ` nuxtContext `
112
115
113
- ``` js
116
+ ``` vue
114
117
// pages/todos.vue
115
118
<template>
116
119
<div>
@@ -129,18 +132,26 @@ import { useQuery, useQueryClient, dehydrate } from "@tanstack/vue-query";
129
132
130
133
export default defineComponent({
131
134
setup() {
135
+ // Get QueryClient either from SSR context, or Vue context
136
+ const { ssrContext } = useContext()
137
+ // Make sure to provide `queryClient` as a second parameter to `useQuery` calls
138
+ const queryClient = (ssrContext != null && ssrContext.VueQuery) || useQueryClient()
139
+
132
140
// This will be prefetched and sent from the server
133
- const { refetch , data , suspense } = useQuery (" todos" , getTodos);
141
+ const { data, refetch, suspense } = useQuery({
142
+ queryKey: ['todos'],
143
+ queryFn: getTodos,
144
+ }, queryClient)
134
145
// This won't be prefetched, it will start fetching on client side
135
- const { data2 } = useQuery (" todos2 " , getTodos);
136
-
137
- const { ssrContext } = useContext ();
138
- const queryClient = useQueryClient ();
146
+ const { data2 } = useQuery({
147
+ queryKey: "todos2",
148
+ queryFn: getTodos,
149
+ }, queryClient)
139
150
140
151
onServerPrefetch(async () => {
141
- await suspense ();
142
- ssrContext .nuxt .vueQueryState = dehydrate (queryClient);
143
- });
152
+ await suspense()
153
+ ssrContext.nuxt.vueQueryState = dehydrate(queryClient)
154
+ })
144
155
145
156
return {
146
157
refetch,
0 commit comments