Vue2移动端项目使用$router.go(-1)不生效问题记录

58 篇文章 4 订阅
文章讲述了在Vue2移动端项目中,使用Vant2的头部组件时,`this.$router.go(-1)`失效的问题。作者提供了几种解决方法,包括替换为`this.$router.back()`,存储`from.path`并使用`this.$router.push`,以及在hash模式下利用`onhashchange`事件处理。最终作者选择了`this.$router.back()`来解决问题。
摘要由CSDN通过智能技术生成

目录

1、this.$router.go(-1) 改成 this.$router.back()

2、存储 from.path,使用 this.$router.push

3、hash模式中使用h5新增的onhashchange事件做hack处理

4、this.$router.go(-1) 之前添加一个 replace 方法


问题背景 :

在 Vue2 的一个移动端开发项目中,拆封了一个公共头部组件 components 下的 Header ,

里面使用了 Vant2 组件库 的 <van-nav-bar> 组件,组件有个点击左侧 “ 返回 ” 按钮的方法,

会调用 @click-left="onClickLeft" , onClickLeft 方法里使用了 this.$router.go(-1) ,

返回上一级路由页面的 Vue2 语法,结果没有返回上一级页面,而且路由地址眼看着改变了,

但是页面展示还是停留在当前页面,需要手动刷新才能渲染跳转后的页面。

解决起来一头雾水,所以只好百度咯 ~ 这里只是给自己留一个记录方便看 :


1、this.$router.go(-1) 改成 this.$router.back()

this.$router.go(-1) 失效 ( 路由改变了,界面未刷新)


2、存储 from.path,使用 this.$router.push


3、hash模式中使用h5新增的onhashchange事件做hack处理

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

4、this.$router.go(-1) 之前添加一个 replace 方法


以上就是我百度到的各种解决办法啦 ,小伙伴们可自行测试选取哦~

这里我就直接使用了第1种方法,改成了  this.$router.back() ,看着好像也 OK 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值