Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Vuex存储中存储firebase令牌_Firebase_Vue.js_Nuxt.js - Fatal编程技术网

如何在Vuex存储中存储firebase令牌

如何在Vuex存储中存储firebase令牌,firebase,vue.js,nuxt.js,Firebase,Vue.js,Nuxt.js,我正在尝试将从Firebase返回的accessToken存储到我的Vue项目中的Vuex存储中,当我运行代码时,我收到以下错误: 未捕获的TypeError:无法读取未定义的属性“$store” 看起来它没有在下面的代码中选择store.js,你知道为什么吗 谢谢 Login.vue mounted: function() { Firebase.auth.onAuthStateChanged( user => { if (user) { us

我正在尝试将从Firebase返回的accessToken存储到我的Vue项目中的Vuex存储中,当我运行代码时,我收到以下错误:

未捕获的TypeError:无法读取未定义的属性“$store”

看起来它没有在下面的代码中选择store.js,你知道为什么吗

谢谢

Login.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')

我猜:

   user.getIdToken().then(function(idToken) {
     this.$store.commit('setStoreToken', idToken)
     return idToken
   });
您不使用箭头函数,这意味着
绑定到函数本身。您可以使用箭头函数或在其前面创建一个变量,如
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
   });
我猜:

   user.getIdToken().then(function(idToken) {
     this.$store.commit('setStoreToken', idToken)
     return idToken
   });
您不使用箭头函数,这意味着
绑定到函数本身。您可以使用箭头函数或在其前面创建一个变量,如
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
   });