router.beforeEach((to, from, next) => {
console.log(router.app.$store.state.isLogin)
if(!userinfo && to.path.indexOf('login') == -1){
return next('/login')
}else{
return next()
}
});
router.beforeEach((to, from, next) => {
console.log(router.app.$store.state.isLogin)
if(!userinfo && to.path.indexOf('login') == -1){
return next('/login')
}else{
return next()
}
});
首先确定你的这段拦截器代码,是写在main.js里的。然后引入vuex的store
在拦截器里,先输出store这个对象看看,里面应该会有个 getters
对象,你所定义的state,都会在里面。
试试 store.getters.isLogin
9 回答1.7k 阅读✓ 已解决
6 回答997 阅读
3 回答1.4k 阅读✓ 已解决
4 回答979 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
3 回答882 阅读
3 回答1.3k 阅读✓ 已解决
2 回答14.1k 阅读✓ 已解决
1 回答3.8k 阅读
3 回答8.2k 阅读✓ 已解决
1 回答7.1k 阅读✓ 已解决
2 回答4.7k 阅读
因为使用的beforeEach,所以这个时候组件应该还没挂载,你可以通过
console.log(router.app.$children.length)
看到length为0,所以不能直接通过app获取store中的值。
我找了一下store,你可以这样获取
isLogin = router.app.$options.components.App.store.state.isLogin
因为你要获取是否登录,其实你也可以把登录情况存在cookie里,这样可以通过cookie获取isLogin。