【问题标题】:How to store firebase token in Vuex store如何在 Vuex 商店中存储 firebase 令牌
【发布时间】:2020-09-10 12:19:41
【问题描述】:

当我运行代码时,我试图将从 Firebase 返回的 accessToken 存储到我的 Vue 项目中的 Vuex 存储中,但出现以下错误:

未捕获的类型错误:无法读取未定义的属性“$store”

看起来它没有在下面的代码中选择 store.js,有什么想法吗?

谢谢

登录.vue

mounted: function() {
    Firebase.auth.onAuthStateChanged( user => {

        if (user) {
          user.getIdToken().then(function(idToken) {
            this.$store.commit('setStoreToken', idToken)
            return idToken
          });

        }
        else {
          .
          .
          . 
        }



store.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    loggedIn: false,
    accessToken: '',
  },
  mutations: {
    loggedIn () {
      this.state.loggedIn = true
    },
    loggedOut () {
      this.state.loggedIn = false
    },
    setStoreToken(state, accessToken) {
      state.accessToken = accessToken
    },
  },
  getters: {
    getAccessToken: state => {
      return state.accessToken
    }
  },
})

main.js

import store from './store.js'

new Vue({
  store,
  router,
  render: h => h(App),
}).$mount('#app')

【问题讨论】:

    标签: firebase vue.js nuxt.js


    【解决方案1】:

    我的猜测:

       user.getIdToken().then(function(idToken) {
         this.$store.commit('setStoreToken', idToken)
         return idToken
       });
    

    您不使用箭头函数,这意味着 this 绑定到函数本身,您可以使用箭头函数,也可以像 const self = this 这样在其前面创建一个变量

       user.getIdToken().then((idToken)=>{
         this.$store.commit('setStoreToken', idToken)
         return idToken
       });
    

    或者你这样做:

       const self = this;
       user.getIdToken().then(function(idToken) {
         self.$store.commit('setStoreToken', idToken)
         return idToken
       });
    

    【讨论】:

      猜你喜欢
      • 2019-04-28
      • 1970-01-01
      • 2021-04-12
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 2019-08-18
      • 1970-01-01
      相关资源
      最近更新 更多