我拥有由 awesome 完全类型安全的自动生成代码graphql-codgen/vue
。我通过构建一个小包装器在我的项目中使用它,因此我的用户不必每次调用都执行常见的配置任务。例如定义缓存行为、自动更新缓存、以正确的类型和格式解构结果。
带有 JS 和 with 的包装器工人,any
但我也希望它是类型安全的,并且由于graphql-codegen
已经以类型安全的方式生成了所有类型和方法,我认为必须有一种方法可以做到这一点。不知何故,我认为有歧视性的工会......
所以归结为示例代码我的问题是:我有这个自动生成的代码:
//File GQLService.ts
export type CustodiansList = (
{ __typename: 'Query' }
& { custodiansList?: Maybe<Array<(
{ __typename: 'Custodian' }
& Pick<Custodian, 'id' | 'name' | 'street' | 'zip' | 'city' | 'telephone' | 'createdAt' | 'updatedAt'>
)>> }
);
type ReactiveFunctionCustodiansList = () => CustodiansListVariables
/**
* __useCustodiansList__
*
* To run a query within a Vue component, call `useCustodiansList` and pass it any options …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将@vue/apollo-composable与我的 Nuxt-Ts 应用程序一起使用。这是如何将它注入到“普通”Vue 应用程序的根实例中的示例:
import { provide } from '@vue/composition-api'
import { DefaultApolloClient } from '@vue/apollo-composable'
const app = new Vue({
setup () {
provide(DefaultApolloClient, apolloClient)
},
render: h => h(App),
})
Run Code Online (Sandbox Code Playgroud)
问题:我不知道如何访问Nuxt-TS 中的根实例。
我尝试制作一个插件,但它直接注入到根实例中(这是不对的,因为@vue/apollo-composable
使用composition-api::provide()
which 创建了它自己的属性_provided
。
如果我使用 nuxt 插件,则会inject
将$
get 连接起来。如果我_provided
直接写一个对象通过ctx.app._provided =
它不会粘住。
import { DefaultApolloClient } from "@vue/apollo-composable";
const myPlugin: Plugin = (context, inject) => {
const defaultClient = ctx.app.apolloProvider.defaultClient;
inject(DefaultApolloClient.toString(), defaultClient) …
Run Code Online (Sandbox Code Playgroud)