【发布时间】:2019-03-01 08:13:19
【问题描述】:
我正在使用 Vue + Vuex 从 localStorage 中删除用户令牌,以使用户注销并将他们重定向到登录页面。
组件注销方法代码:
methods: {
logout () {
this.$store.dispatch('logout')
.then(response => {
this.$router.push({ name: 'login'});
}).catch((e) => {
console.log(e);
});
}
}
商店操作代码:
logout({commit}) {
return new Promise((resolve, reject) => {
try {
commit('logout');
resolve("done");
} catch (e) {
reject(e);
}
});
}
存储变异函数:
logout (state) {
localStorage.removeItem('user');
state.is_logged_in = false;
state.user = null;
}
问题是:
发生了什么:
- 用户重定向到登录页面。
- 用户重定向回仪表板。
- 用户访问令牌已删除。
所以用户停留在同一个页面。
这意味着:
action 方法被调度,然后它返回到组件注销方法,然后它提交突变。
【问题讨论】:
-
我在上面的代码中看不到任何可能在执行
commit('logout')之前发生的任何事情。我怀疑那里有一个异步调用,OP 是 a) 没有显示,b) 没有等待完成 -
@Phil 在用户注销并删除他的 localStorage 后重定向是正确的方法吗?
-
"what" 是正确的方式吗?
标签: javascript vue.js promise vuex