美文网首页
vue-router打开新的tab页时,其内容是上一个tab页的

vue-router打开新的tab页时,其内容是上一个tab页的

作者: 猪儿打滚 | 来源:发表于2020-12-11 08:50 被阅读0次

一、问题场景描述

1:进入列表页,点击内容A详情,跳转到内容A详情页(this.$router.push(path: `内容A的url/${内容A的id}`})
2:返回列表页,点击内容B详情,跳转到内容B详情页(this.$router.push(path: `内容A的url/${内容B的id}`})
问题:此时,url中的参数不一样,但是新打开的内容B的tag页面中的内容,依旧是内容A的内容(读取了history缓存的界面状态的数据)

二、解决方法1

可以在离开上一个内容详情页时,销毁掉当前组件

     // 导航离开该组件的对应路由时调用[可以访问组件实例 `this`]
     beforeRouteLeave (to, from, next) {
       // 销毁组件,避免通过vue-router再次进入时,仍是上次的history缓存的状态
       this.$destroy(true)
       next()
     },  

三、解决方法2

或者,可以在路由更新之前,对数据进行一次调用获取(一般里面的语句和beforeRouteEnter的一样)
弊端:无法对一些需要加载dom的控件,会报错,比如说echarts

    beforeRouteEnter(to, from, next) { //路由加载前
      next(vm => {
        vm.debugtalk_id = vm.$router.currentRoute.params.id;;
        vm.getCode();
      });
      next()
    },

    beforeRouteUpdate(to, from, next) {
      // 路由在同组件之间更新之前被调用
      this.debugtalk_id = vm.$router.currentRoute.params.id;;
      this.getCode();
      next()
    },

相关文章

网友评论

      本文标题:vue-router打开新的tab页时,其内容是上一个tab页的

      本文链接:https://www.haomeiwen.com/subject/umgdgktx.html