译零 TransZero · TanStack Query 中文文档
主站

自定义客户端

更新于 2026-11-02 Vue 查看英文原文 ↗

自定义客户端

Vue Query 允许为 Vue 上下文提供自定义的 QueryClient。

当你需要提前创建 QueryClient,以便将其集成到无法访问 Vue 上下文的其他库中时,这会非常有用。

因此,VueQueryPlugin 接受 QueryClientConfig 或 QueryClient 作为插件选项。

如果你提供了 QueryClientConfig,则 QueryClient 实例将在内部创建,并提供给 Vue 上下文。

TypeScript
1const vueQueryPluginOptions: VueQueryPluginOptions = {2  queryClientConfig: {3    defaultOptions: { queries: { staleTime: 60 * 60 * 1000 } },4  },5}6app.use(VueQueryPlugin, vueQueryPluginOptions)
TypeScript
1const myClient = new QueryClient(queryClientConfig)2const vueQueryPluginOptions: VueQueryPluginOptions = {3  queryClient: myClient,4}5app.use(VueQueryPlugin, vueQueryPluginOptions)

自定义上下文键

你还可以自定义 QueryClient 在 Vue 上下文中可被访问的键名。当同一页面上存在多个 Vue 2 应用、需要避免命名冲突时,这会很有用。

该功能既适用于默认的 QueryClient,也适用于自定义的 QueryClient。

TypeScript
1const vueQueryPluginOptions: VueQueryPluginOptions = {2  queryClientKey: 'Foo',3}4app.use(VueQueryPlugin, vueQueryPluginOptions)
TypeScript
1const myClient = new QueryClient(queryClientConfig)2const vueQueryPluginOptions: VueQueryPluginOptions = {3  queryClient: myClient,4  queryClientKey: 'Foo',5}6app.use(VueQueryPlugin, vueQueryPluginOptions)

要使用在自定义键下注册的客户端,请通过 useQueryClient 获取它,并将其作为第二个参数传入。

JavaScript
1useQuery(2  {3    queryKey: ['query1'],4    queryFn: fetcher,5  },6  useQueryClient('Foo'),7)

开发者工具(devtools)会在默认键下查找客户端,因此你也需通过 client 属性将客户端传给它们。

HTML
1<script setup>2import { useQueryClient } from '@tanstack/vue-query'3import { VueQueryDevtools } from '@tanstack/vue-query-devtools'45const queryClient = useQueryClient('Foo')6</script>7 8<template>9  <VueQueryDevtools :client="queryClient" />10</template>

在内部,自定义键会作为后缀与默认查询键组合。但用户无需关心此细节。

TypeScript
1const vueQueryPluginOptions: VueQueryPluginOptions = {2  queryClientKey: 'Foo',3}4app.use(VueQueryPlugin, vueQueryPluginOptions) // -> VUE_QUERY_CLIENT:Foo

本页为 TanStack Query 文档(Vue 版)的非官方中文翻译,原文由上游团队维护,遵循 MIT 许可。 译文如有偏差,以英文原文为准。

译自上游 59d11de