最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 记vue-router中点击浏览器前进后退地址栏路由变了但是页面没更新

    正文概述 掘金(昭光)   2020-12-24   790

    表象:

    在进行正常页面跳转操作后(页面A跳转到页面B),点击浏览器的左上角的'后退'按钮,点击后,可以看到url地址已经发生了变化(url由页面B变为页面A),hash值也已经是上一页的路由,但是浏览器显示的内容却没有发生变化(依旧是页面B)。

    可能的解决办法

    1、hash模式的情况

    • 了解,hash模式的url相关知识 Vue-Router的Hash说起的URL相关知识

    记vue-router中点击浏览器前进后退地址栏路由变了但是页面没更新

    • 通过onhashchange 事件处理
    // app.vue 入口处:
    mounted () {
      // 检测浏览器路由改变页面不刷新问题,hash模式的工作原理是hashchange事件
      window.addEventListener('hashchange', () => {
        let currentPath = window.location.hash.slice(1)
        if (this.$route.path !== currentPath) {
          this.$router.push(currentPath)
        }
      }, false)
    }
    

    2、尝试用setTimeout来处理

    缺点:虽然可以解决,但是setTimeout的合理值无法确定。还有一个问题就要是维护这个定时器,需要在点击之前先清除原有定时器,要不然执行会混乱。

    this.$route.back();
    setTimeout(() => {
        this.$store.commit("error/reset");
    }, 50)
    

    3、利用H5提供的history的popstate事件来处理

    window.addEventListener("popstate", function(e) {
    }, false);
    

    通过回调函数处理

      $back(callback) {
          if (NativeExternalRequest.back(callback)) {
              return;
          }
          if (callback) {
              EventUtil.on(window, 'popstate', (e) => {
                  EventUtil.off(window, 'popstate');
                  callback(e);
              }, EventUtil.defineOptions({
                  capture: true,
              }));
          }
          this.$router.back();
      }
    

    其他情况


    起源地下载网 » 记vue-router中点击浏览器前进后退地址栏路由变了但是页面没更新

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元