watch监听路由变化详解

一、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(); 
})

 

posted @   小那  阅读(9680)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示