vue中实现页面的拦截、跳转、判断

1,全局前置守卫:beforeEach

const router =new Router({……});
router.beforeEach((to, from, next) => {
 
});

2,全局后置守卫:afterEach

3,路由独享的钩子函数(路由守卫):beforeEnter

在配置路由的时候直接定义beforeEnter守卫,跳转到这个路由时候才会执行
const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]

 

4 组件内的钩子函数(组件守卫)
直接写在单个vue文件中的中,写的位置跟mounted之类的钩子函数同级别。参数都是to、from、next

4.1 beforeRouteEnter
作用:在渲染该组件对应的路由被confirm前调用,

注意:这时候该组件的this不能使用,因为组件实例还没被创建。

 

4.2 beforeRouteUpdate
作用:当前路由改变,但是该组件被复用时候调用,举例来说,对于三级导航,一个带有动态参数的路径/index/id,在/index/1和 /index/2之间跳转的时候,由于会渲染同样的index组件,因此该组件会被复用,而这个钩子会就再复用的时候调用。

注意:可以使用组件的实力this

4.3 beforeRouteLeave
作用:导航离开该组件对应的路由时调用

5,单个vue文件中,设置监听

 watch: {
        $route: {
            handler: function(val, oldVal){
                if(oldVal.path== "/map"){
                // this.$refs.tclb.closeDrawer()
                this.drawer=false;
                }
                if(val.path== "/map"){
                    document.getElementById("tclb_container").style.display="block";
                     this.getParams();
                //this.drawer=false;
                }
                
            },
            
            // 深度观察监听
            // deep: true
        },
       // "$route":"getPath" // 监听事件
  },

 

posted @ 2021-09-16 23:21  shuihanxiao  阅读(2828)  评论(0编辑  收藏  举报