跳至内容

设置

确保您已 安装 Apollo Client

1. 安装 @vue/apollo-composable

shell
npm install --save @vue/apollo-composable

或者

shell
yarn add @vue/apollo-composable

2. 将 Apollo Client 连接到 Vue

Vue 2

在您的根实例中,您需要提供一个默认的 Apollo Client 实例

js
import { provide } from '@vue/composition-api'
import { DefaultApolloClient } from '@vue/apollo-composable'

const app = new Vue({
  setup () {
    provide(DefaultApolloClient, apolloClient)
  },

  render: h => h(App),
})

警告

在本指南的其余部分,我们将展示使用 Vue 3 的代码示例。如果您需要 Vue 2,您可能需要从 '@vue/composition-api' 而不是 'vue' 导入组合式 API 函数。

Vue 3

js
import { createApp, provide, h } from 'vue'
import { DefaultApolloClient } from '@vue/apollo-composable'

const app = createApp({
  setup () {
    provide(DefaultApolloClient, apolloClient)
  },

  render: () => h(App),
})

多个客户端

您还可以提供多个 Apollo Client 实例以供您的应用程序使用。在这种情况下,建议提供一个 default 实例

js
import { provide } from 'vue'
import { ApolloClients } from '@vue/apollo-composable'

const app = new Vue({
  setup () {
    provide(ApolloClients, {
      default: apolloClient,
    })
  },

  render: h => h(App),
})

您可以添加其他客户端实例

js
provide(ApolloClients, {
  default: apolloClient,
  clientA: apolloClientA,
  clientB: apolloClientB,
})

然后,您可以使用 clientId 选项在我们将要介绍的函数(例如 useQueryuseMutationuseSubscription)中选择要使用哪个客户端。

在 setup 之外使用

当在 vue 上下文之外使用例如 useQuery 时,无法使用 vue 的 provide/inject 机制注入客户端。@vue/apollo-composable 可以管理自己的 apollo 客户端

对于单个默认客户端,请使用 provideApolloClient

js
import { provideApolloClient } from "@vue/apollo-composable";

const query = provideApolloClient(apolloClient)(() => useQuery(gql`
  query hello {
    hello
  }
`))
const hello = computed(() => query.result.value?.hello ?? '')

对于多个客户端,请使用 provideApolloClients

js
import { provideApolloClients } from "@vue/apollo-composable";

provideApolloClients({
  default: apolloClient,
  clientA: apolloClientA,
  clientB: apolloClientB,
})