“ vuex-persistedstate”不会调用操作并重新加载页面

时间:2018-07-02 14:36:47

标签: vue.js vuex persistent-storage

需要一些帮助。

添加了vuex-persistedstate来进行保护,看来它不会让我称呼我的商店行动。当我遇到试图注销的调度时,页面会重新加载,localStorage会保留登录时获得的信息,并且会重置VueDev工具上的整个Vuex面板。

这是我的代码。

store.js

import Vue from 'vue'
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate'

Vue.use(Vuex)

export default new Vuex.Store({
  strict: true,
  plugins: [
    createPersistedState()
  ],
  state: {
    token: null,
    user: null
  },
  mutations: {
    setToken (state, token) {
      console.log('mutation1')
      state.token = token
    },
    setUser (state, userData) {
      console.log('mutation2')
      state.user = userData.username
      state.cargo = userData.cargo
    }
  },
  actions: {
    setToken ({commit}, token) {
      console.log('action1')
      commit('setToken', token)
    },
    setUser ({commit}, userData) {
      console.log('action1')
      commit('setUser', userData)
    }
  }
})

登录组件上的登录方法

async login () {
  try {
    const response = await AuthenticationService.ingresar({
      username: this.username,
      password: this.password
    })
    const { username, cargo, token } = response.data
    this.$store.dispatch('setToken', token)
    this.$store.dispatch('setUser', { username, cargo })
  } catch (error) {
    this.error = error.response.data.error
  }
}

导航栏组件上的注销方法

logout () {
  this.$store.dispatch('setToken', null)
  this.$store.dispatch('setUser', null)
  this.$router.push('/')
}

如果我禁用vuex-persistedstate,一切都会起作用。

1 个答案:

答案 0 :(得分:1)

对不起,我不好。在调用注销功能的链接上获得了 href =“” 。这是重新加载页面,而不是调用函数。因此无所事事的状态。花了我几个世纪的时间找到它。没关系。 :)