码迷,mamicode.com
首页 > 其他好文 > 详细

watch监听路由变化详解

时间:2020-12-02 12:06:49      阅读:5      评论:0      收藏:0      [点我收藏+]

标签:conf   store   rgba   方法   mil   compute   hand   声明   方式   

一、watch监听路由的方法

通过watch监听,当路由发生变化的时候执行。

方法一:

watch:{
  $router(to,from){
       console.log(to.path)
  }
}

方法二:

watch: {
   $route: {
     handler:  function (val, oldVal){
       console.log(val);
     },
     // 深度观察监听
     deep:  true
   }
},

方法三:

watch: {
   ‘$route‘ : ‘getPath‘
},
methods: {
   getPath(){
     console.log( this .$route.path);
   }
}

二、key-用来阻止“复用”的

Vue 为你提供了一种方式来声明“这两个元素是完全独立的——不要复用它们”。只需添加一个具有唯一值的 key 属性即可(Vue文档原话)

<router-view :key= "key" ></router-view>
 
computed: {
   key() {
     return  this .$route.name !== undefined?  this .$route.name + new  Date():  this .$route + new  Date()
   }
}

使用computed属性和Date()可以保证每一次的key都是不同的,这样就可以如愿刷新数据了。

三、全局监听路由(通过vue-router的钩子函数beforeRouteEnter/beforeRouteUpdate/beforeRouteLeave)

一般会在router里面加跳转验证才会用到这个方法

方法一:

watch:{
       $route(to,from){
         if (to.path ==  ‘/‘  || to.path ==  ‘/Prisoner‘  || to.path ==  ‘/Goods‘  || to.path ==  ‘/Time‘  || to.path ==  ‘/Mine‘ ){
           /**
            * $store来自Store对象
            * dispatch 向 actions 发起请求
            */
           this .$store.dispatch( ‘showTabBar‘ );
         } else {
           this .$store.dispatch( ‘hideTabBar‘ );
         }
       }
     },
     beforeRouteEnter (to, from, next) {
       // 在渲染该组件的对应路由被 confirm 前调用
       // 不!能!获取组件实例 `this`
       // 因为当钩子执行前,组件实例还没被创建
     },
     beforeRouteUpdate (to, from, next) {
       // 在当前路由改变,但是该组件被复用时调用
       // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
       // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
       // 可以访问组件实例 `this`
     },
     beforeRouteLeave (to, from, next) {
       // 导航离开该组件的对应路由时调用
       // 可以访问组件实例 `this`
     },

 

方法二:

在app.vue的create中加入下面代码,然后进行判断

this.$router.beforeEach((to ,from,next) =>{
       console.log(to);
       next(); 
})

 

watch监听路由变化详解

标签:conf   store   rgba   方法   mil   compute   hand   声明   方式   

原文地址:https://www.cnblogs.com/meiyanstar/p/14047622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!