vue路由监听,做到刷新时也可以监听

跳转监听 

方法一

 

// 监听,当路由发生变化的时候执行
watch:{
  $route(to,from){
    console.log(to.path);
  }
},

方法二

// 监听,当路由发生变化的时候执行
watch: {
  $route: {
    handler: function(val, oldVal){
      console.log(val);  //跳转前的路由
      console.log(oldVal);  //跳转后的路由
    },
    // 深度观察监听
    deep: true
  }
},

方法三

// 监听,当路由发生变化的时候执行
watch: {
  '$route':'getPath'
},
methods: {
  getPath(){
    console.log(this.$route.path);
  }
}

刷新时也可以监听 

只需加  immediate:true,

// 监听,当路由发生变化的时候执行
  watch: {
    $route:{
      immediate:true, //加这个就可以在刷新时也监听到相应页面的路由

      handler(val){
          console.log(val)
      },
      // 深度观察监听
      deep: true
    }
  },

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 3中,当我们使用`watch` API或Vue Router中的`beforeRouteUpdate`钩子函数来监听路由刷新事件,会遇到之前路由丢失的问题。 在Vue 2中,由于Vue Router是基于组件的,当组件被复用,其实例不会被销毁,而是被重新使用。这就意味着组件的生命周期钩子函数也会再次调用,同之前的路由信息也能够保留。 然而,在Vue 3中,由于引入了Composition API,Vue Router的实现方式发生了变化。现在,每次路由发生变化,相应的组件会被销毁再重新创建,因此之前的路由信息会丢失。 为了解决这个问题,我们可以使用Vue 3提供的`watch` API来监听`$route`对象的变化,并在回调函数中处理之前路由丢失的情况。我们可以通过调用`getCurrentInstance()`函数来获取当前组件实例,并在组件销毁前保存之前的路由信息。 以下是一个示例代码,展示了如何在Vue 3中使用`watch` API来监听路由刷新事件,并处理之前路由丢失的情况: ```javascript import { getCurrentInstance, watch } from 'vue' export default { setup() { const currentInstance = getCurrentInstance() const previousRoute = ref(null) watch( () => currentInstance.vnode.props.$route, (to, from) => { previousRoute.value = from } ) // 在组件销毁前保存之前的路由信息 onBeforeUnmount(() => { currentInstance.vnode.props.$router.previousRoute = previousRoute.value }) return { previousRoute } } } ``` 通过在`watch`的回调函数中将之前的路由信息保存到组件实例的`previousRoute`属性中,然后在组件销毁前将其保存到Vue Router的`previousRoute`属性中,我们就能够在路由刷新保留之前的路由信息了。 需要注意的是,由于Vue 3中的Composition API是使用函数式编程的方式来组织和管理代码的,因此对于路由监听和相关处理逻辑,我们需要将其放在`setup`函数中进行处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值