【发布时间】:2017-08-09 00:36:19
【问题描述】:
我使用集中状态管理的 vuex 在我的 vuex store.js 中,我将登录状态存储为布尔值,如下所示
export const store = new Vuex.Store({
state: {
loggedIn: false,
userName: 'Guest',
error: {
is: false,
errorMessage: ''
}
},
getters: {
g_loginStatus: state => {
return state.loggedIn;
},
g_userName: state => {
return state.userName;
},
g_error: state => {
return state.error;
}
}
)};
当用户登录时,我将 loginstatus 设置为 true 并删除登录按钮并将其替换为注销按钮 一切正常,但问题是当用户登录时,如果我直接在搜索栏中输入登录组件的路径,我可以再次导航到登录页面 我想展示这种行为 如果用户已登录并在搜索栏中搜索登录页面的路径,则必须将其重定向到主页
我尝试在登录组件中使用 beforeRouteEnter 但我们无法访问 this 实例,因为组件尚未加载 那么如何从我的商店检查登录状态
我在 login.vue 中的脚本
script>
export default{
data(){
return{
email: '',
password: ''
};
},
methods: {
loginUser(){
this.$store.dispatch('a_logInUser', {e: this.email, p: this.password}).then(() =>{
this.$router.replace('/statuses');
});
}
},
beforeRouteEnter (to, from, next) {
next(vm => {
if(vm.$store.getters.g_loginStatus === true){
//what shall i do here
}
})
}
}
【问题讨论】:
标签: vue.js vuejs2 vue-router vuex