在 NUXT 中使用 vue-apollo 从 Vuex 商店访问 this.$apollo?

Posted

技术标签:

【中文标题】在 NUXT 中使用 vue-apollo 从 Vuex 商店访问 this.$apollo?【英文标题】:Access to this.$apollo from Vuex store with vue-apollo in NUXT? 【发布时间】:2020-08-25 06:30:34 【问题描述】:

我想将来自登录的用户存储在 vuex 商店中的操作上。但是无法访问this.$apollo

export const actions = 
  UPSERT_USER( commit ,  authUser, claims ) 
     this.$apollo
        .mutate(
          mutation: UPSERT_USER_MUTATION,
          variables: 
            id: user.uid,
            email: user.email,
            name: user.name,
            picture: user.picture,
          ,
        )
    

谢谢!

【问题讨论】:

【参考方案1】:

因为我使用 nuxt apollo 插件在我的 nuxt apollo 插件中注入了 apolloProvider,

inject("apollo", apolloProvider);

然后在我的情况下,我使用它来访问它,

export default 
  actions: 
    foo (store, payload) 
        let apolloClient = this.$apollo.defaultClient
    
  

【讨论】:

【参考方案2】:

你应该可以像这样访问它:

export default 
  actions: 
    foo (store, payload) 
      let client = this.app.apolloProvider.defaultClient
    
  

查看https://github.com/nuxt-community/apollo-module

【讨论】:

嗨,谢谢你的回答,它是这样工作的。问题是当调用突变时,onUserChange,this.app.apolloProvider 尚未定义。我用 1 秒的睡眠时间修复了它……但我认为这不是一个好主意。你知道如何在商店里等待 apolloProvider 准备就绪吗?然后执行 mutate()? 嗯,是的,睡一秒钟不是一个好主意。很难说,但我很确定你不是第一个与商店里的阿波罗打交道的人。试着搜索一下,可能你的解决方案就在外面等着你找到。我现在还真不知道 ;( 好的,谢谢。我正在使用 Firebase Nuxt 模块,该模块在用户登录时调用一个操作,但此时 apollo 提供程序尚未在商店中准备好。

以上是关于在 NUXT 中使用 vue-apollo 从 Vuex 商店访问 this.$apollo?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 @vue/composition-api 和 nuxt.js 获取 vue-apollo 实例

如何在 Vuepress 站点中使用 vue-apollo?

当我在 Vue-apollo 中使用本地状态时如何获取远程 GraphQL 数据

如何从 vue-apollo 中访问 this.$route?

如何将 cookie 添加到 vue-apollo 请求中?

将带有表单的文件从 nuxt 发送到节点服务器(nodemailer)