需要一些帮助。
添加了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,一切都会起作用。
答案 0 :(得分:1)
对不起,我不好。在调用注销功能的链接上获得了 href =“” 。这是重新加载页面,而不是调用函数。因此无所事事的状态。花了我几个世纪的时间找到它。没关系。 :)