@hebilicious/vue-query-nuxt
Version:
A Nuxt module for Vue Query
20 lines (19 loc) • 951 B
JavaScript
import { QueryClient, VueQueryPlugin, dehydrate, hydrate } from "@tanstack/vue-query";
import { getVueQueryOptions } from "./utils.mjs";
import { pluginHook } from "#build/internal.vue-query-plugin-hook";
import { defineNuxtPlugin, useRuntimeConfig, useState } from "#imports";
export default defineNuxtPlugin((nuxt) => {
const { stateKey, queryClientOptions, vueQueryPluginOptions } = getVueQueryOptions(useRuntimeConfig());
const vueQueryState = useState(stateKey);
const queryClient = new QueryClient(queryClientOptions);
const { pluginReturn, vueQueryPluginOptions: hookOptions } = pluginHook({ queryClient, nuxt });
nuxt.vueApp.use(VueQueryPlugin, { queryClient, ...vueQueryPluginOptions, ...hookOptions });
if (process.server) {
nuxt.hooks.hook("app:rendered", () => {
vueQueryState.value = dehydrate(queryClient);
});
}
if (process.client)
hydrate(queryClient, vueQueryState.value);
return pluginReturn;
});