codecheck
1import type {
2DehydratedState,
3VueQueryPluginOptions,
4} from "@tanstack/vue-query";
5import {
6VueQueryPlugin,
7QueryClient,
8hydrate,
9dehydrate,
10} from "@tanstack/vue-query";
11// Nuxt 3 app aliases
12import { defineNuxtPlugin, useState } from "#imports";
13
14export default defineNuxtPlugin((nuxt) => {
15const vueQueryState = useState<DehydratedState | null>("vue-query");
16
17// Modify your Vue Query global settings here
18const queryClient = new QueryClient({
19defaultOptions: { queries: { staleTime: 5000 } },
20});
21const options: VueQueryPluginOptions = { queryClient };
22
23nuxt.vueApp.use(VueQueryPlugin, options);
24
25if (process.server) {
26nuxt.hooks.hook("app:rendered", () => {
27vueQueryState.value = dehydrate(queryClient);
28});
29}
30
31if (process.client) {
32hydrate(queryClient, vueQueryState.value);
33}
34});
35