Vue中监听路由变化,来决定是否跳转页面
2019-03-15 20:22
1656 查看
这段时间在用Vue做一个项目时,遇到了一个需求。用户如果没有登录,在点击导航栏按钮时,就不能进入某些页面。
以前在用原生Js写时,这个需求都是交给后端去处理的,但因为Vue来是单页面框架,所以就不需要交给后端去处理了。
最开始我是在按钮上设置了如果用户是没有登录的状态,就不执行跳转行为,但我在浏览器的URL地址栏中输入要跳转的页面地址时,就能跳转过去,没有被阻拦,最后我用了Vue中的 $router来解决。
watch: { $route (to, from) { //to:即将要跳转到的页面 from:即将离开的页面 if (to.path === '/write' && this.$store.state.usertf === '1') { alert('想进去?没门,快滚去登录!') this.$router.push('/home') this.$emit('denglu') } else if (to.path === '/home') { this.$router.push('/home') } } },
在组件中用 watch来监听 $router的变化,这样不管是点击导航栏按钮还是在URL地址栏中输入地址,它都能检测到,然后再来根据要跳转哪个页面再来做出处理是否要放行的处理,这样就能实现这个需求了。
注意:只能监听子路由的路由变化,同级或者父级路由的变化是监听不到的,如果要全局监听路由变化,可以在App.vue文件中监听。
相关文章推荐
- vue监听路由参数变化更新页面
- vue-router 判断是否登陆,未登录跳转登陆页面
- [置顶] 在vue路由变化的时候,改变页面的title
- vue路由跳转时判断用户是否登录功能的实现
- vue项目如何监听窗口变化,达到页面自适应?
- vue 跳转页面时判断是否需要登录
- vue使用路由进行页面跳转时传递参数
- vue路由名字不变,仅query发生变化,点击返回页面不重新渲染
- vue项目如何监听窗口变化,达到页面自适应?
- vue 监听路由变化 mint-ui中tabbar遇到的坑
- vue中监听路由变化
- VUE监听路由变化的几种方式
- vue 监听路由变化 axios渲染
- 解决vue 路由变化页面数据不刷新的问题
- Vue-- 监听路由变化,数据无法更新?
- vue路由传参并跳转页面
- vue通过 vue.mixin(混合)实现 任意页面记录滚动条位置(路由router.query参数一致) 并跳转到上次的位置
- Vue根据是否授权,跳转不同的路由(vue-router动态路由)
- vue路由跳转时 判断用户是否处于 登录状态
- vue路由跳转时 判断用户是否处于 登录状态