【发布时间】:2020-12-11 17:44:32
【问题描述】:
我有以下问题:
这是我的突变之一:
tryAutoLogin(state) {
console.log("Trying auto login...");
const token = window.localStorage.getItem("token");
if (!token) {
return;
}
const expirationDate = window.localStorage.getItem("token_exp");
const now = new Date();
if (now >= expirationDate) {
return;
}
state.userData.loggedIn = true;
state.userData.username = token.identity;
// desired: this.$router.push("/dashboard") => results in undefined
}
目前我在组件的创建阶段在组件内提交了这个突变:
created() {
this.$store.commit("tryAutoLogin");
this.$router.push("/dashboard");
}
这不是一个好方法,因为我必须输出一个值,将它存储在一个变量中,然后使用 if/else 来处理这个this.$router.push("/dashboard")。
我怎样才能优雅地解决这个问题?在 // desired 评论中的突变内部是有利的。有没有办法访问Vuex商店里面的路由器?
【问题讨论】:
-
尝试使用vue-router
guards -
我想说在突变中做你想做的事情不是一个好习惯,你可以使用导航守卫。
标签: vue.js vuejs2 vue-component vuex vue-router