美文网首页
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