关于vue-router中点击浏览器前进后退地址栏路由变了但是页面没跳转/回退不刷新

情景:

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

没有任何报错(页面A和页面B无任何js错误或者兼容性错误)。

百度查了很多,就是hash模式导致的,所以重新触发下hashchange事件解决了问题,

解决办法:

1、vue-router HTML5 History 模式  可以设置为history 模式解决问题

a、首先学习下hash模式的url相关知识 

  关于vue-router中点击浏览器前进后退地址栏路由变了但是页面没跳转/回退不刷新

  

  b、对,就是通过onhashchange 事件来解决这个bug

    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)
        }

关于vue-router中点击浏览器前进后退地址栏路由变了但是页面没跳转/回退不刷新

上一篇:动态规划习题


下一篇:面经分享 | B站 | 数据分析 | 2021.1