Vue 3 和 Apollo Composable - 我们有义务在 setup() 中调用 useMutation 和 useQuery

Ced*_*chi 4 graphql vue-apollo vuejs3

我是 Vue 3 和 Apollo Composable 的新手。我首先创建了一个 Vuex 存储和一个模块服务来从 GraphQL 端点获取数据。此外,我注意到在实现过程中我无法在 setup() 之外调用 useMutation 和 useQuery。

我可以对此有更多解释吗?如果还有其他方法可以在 setup() 之外使用 useQuery 和 useMutation ,您可以向我展示它们吗?

小智 5

是的。您可以使用provideApolloClient 在组件外部访问它。你可以这样做:

import { provideApolloClient } from '@vue/apollo-composable'
import { defaultClient } from '../../vue-apollo';
import { useQuery, useResult, useLazyQuery } from '@vue/apollo-composable'

provideApolloClient(defaultClient)
Run Code Online (Sandbox Code Playgroud)

从 vue-apollo 文件导入的 defaultClient 是我自己的文件,我已经定义了 HttpLink 和使用该 HttpLink 的 ApolloClient。如果您需要澄清,请随时联系我。

  • useQuery 以这种方式工作,但 useMutation 则不然。有不同的解决方案,我可以在 setup() vue 组件之外使用突变? (2认同)