vue 跳转同一路由,页面不刷新解决方案

本文探讨了在Vue中遇到同一路由跳转但页面不刷新的问题,包括官方推荐的监听路由变化、使用beforeRouteUpdate导航卫士、为路由添加唯一key以及结合provide和inject利用v-if原理重载路由的解决方案。这些方法旨在确保组件实例在参数变化时能正确更新并刷新数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题原因 : vue官网详细解释说明使用同一路由携带不同参数,本质上是重用相同的组件实例,默认在跳转路由时会采用缓存策略,并不会刷新当前路由组件,因此不会调用组件的生命周期挂钩

解决方案1 - 监听路由变化

官方提供的解决方案为要对同一组件更改做出反应,监听$route的变化,或者使用使用2.2中引入的beforeRouteUpdate 导航卫士,调用对应的方法

//#/mk_gsui?id=2
// 监控data中的数据变化
watch: {
    $route(to, from) {
      if (this.$route.query.id) {
        console.info( "加载页面数据" );
      }
    }
},


//或者使用beforeRouteUpdate 导航位置监听路由变化
beforeRouteUpdate(to, from, next) {
    console.info("==当前路由id==" + this.$route.query.id);
    if (this.$route.query.id) {
      console.info("加载页面数据");
    }
    next();
},

注意:

  • 该方案可以在监听方法中完成希望在vue生命周期初始化过程中的业务逻辑,加载相关的数据;可以实现页面重新加载数据效果,但是滚动条并未重置,因此需要对滚动条进行重置处理;
  • 当页面刷新后,此时会认为路由并未发生改变,虽然此时watch中的$rou
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值