vue router返回到指定的路由的场景分析


Posted in Javascript onNovember 10, 2020

项目场景:

项目场景:示例:A(商品详情)——B(商品购买页面)-C(支付成功页面)——D(订单页面)


问题描述:

提示:这里描述项目中遇到的问题:
如果我们不做控制的话,安卓按照浏览器返回机制,依次从D-C-B-A这样子,这样子会有一定的bug,测试那边也是说不过去啊,原本想利用beforeRouteLeave这个来操作进行更改跳转,发现还是有点问题最后还是用beforeRouteEnter来操作了,先放上两个的区别吧:

这里先介绍一下导航守卫

> beforeRouteEnter 离开路由之前执行的函数,可用于页面的反向传值,页面跳转
> beforeRouteLeave	进入路由之前执行的函数,写在组件里可根据路由进行页面判断或传值

vue router返回到指定的路由的场景分析


原因分析: 错误写法没啥用,repalce就跟没有用一样, ```javascript beforeRouteLeave(to, from, next) { if (to.path == "/shopOnline/shopsuccess") { this.$router.replace({ name: "shopOnline" }); next(false); } else { next(); } }, ```

history.pushState(stateObject, title, url);

history.pushState()主要是在不刷新浏览器的情况下,创建新的浏览记录并插入浏览记录队列中。
1.状态对象(stateObject)--stateObject是一个JavaScript对象,通过pushState方法可以将stateObject内容传递到新页面中。
2.标题(title)--几乎没有浏览器支持该参数,但是传一个空字符串会比较安全。
3.地址(url)--新的历史记录条目的地址(可选,不指定的话则为文档当前URL);浏览器在调用pushState()方法后不会加载该地址;传入的URL与当前URL应该是同源的,否则,pushState()会抛出异常

解决方案:

不废话 我还是直接先贴代码吧

data(){
return {
 replaceUrl:"" // 记录你一开始进入的页面
}	
},
// this还不能直接取到
beforeRouteEnter(to, from, next) {
 next(vm => {
 	 //因为当钩子执行前,组件实例还没被创建
  // vm 就是当前组件的实例相当于上面的 this,所以在 next 方法里你就可以把 vm 当 this 来用了。
  console.log(vm);//当前组件的实例
  vm.replaceUrl = from.path;
 });
 },
 mounted() {
  // 挂载完成后,判断浏览器是否支持popstate
  if (window.history && window.history.pushState) {
  history.pushState(null, null, document.URL);
  /*popstate触发时机:当前历史条目为pushState创建时,事件被触发*/
  window.addEventListener('popstate', this.goRouteBack, false);
  }
 },
 methods: {
  goRouteBack(){
  // 需要过滤
	  let routerArray = [
	  "/shopOnline/establishOrder",
	  "/shopOnline/shopsuccess"
	  ];
	  if (routerArray.includes(this.replaceUrl)) {
	  //判断,当获取上个页面进来的路由是D的时候,返回到A页面
	  this.$router.replace({ path: "/shopOnline" });
	  } else {
	  this.$router.replace({ path: "/my" });
	  //判断,当有其他返回值的时候,返回到默认页面
	  }
		}
},
// 页面销毁时,取消监听。否则其他vue路由页面也会被监听 这个必须得写啊!不然来回跳转报错
 destroyed(){
  window.removeEventListener('popstate', this.goRouteBack, false);
 }

到此这篇关于vue router返回到指定的路由的场景分析的文章就介绍到这了,更多相关vue router返回到指定的路由内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript类和继承 this属性使用说明
Sep 03 Javascript
jquery trim() 功能源代码
Feb 14 Javascript
js特殊字符转义介绍
Nov 05 Javascript
用JS动态改变表单form里的action值属性的两种方法
May 25 Javascript
Jquery中map函数的用法
Jun 03 Javascript
JavaScript 对象字面量讲解
Jun 06 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
Nov 18 Javascript
JavaScript 最佳实践:帮你提升代码质量
Dec 03 Javascript
vue最简单的前后端交互示例详解
Oct 11 Javascript
vue基础之模板和过滤器用法实例分析
Mar 12 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
Apr 26 Javascript
vue element实现表格合并行数据
Nov 30 Vue.js
如何将Node.js中的回调转换为Promise
Nov 10 #Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
Nov 09 #Javascript
jquery实现加载更多"转圈圈"效果(示例代码)
Nov 09 #jQuery
夯基础之手撕javascript继承详解
Nov 09 #Javascript
vue实现动态表格提交参数动态生成控件的操作
Nov 09 #Javascript
es5 类与es6中class的区别小结
Nov 09 #Javascript
vue实现标签云效果的示例
Nov 09 #Javascript
You might like
PHP+DBM的同学录程序(5)
2006/10/09 PHP
如何隐藏你的.php文件
2007/01/04 PHP
php ajax 静态分页过程形式
2011/09/02 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
javascript &&和||运算法的另类使用技巧
2009/11/28 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
js 开发之autocomplete="off"在chrom中失效的解决办法
2017/09/28 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
Python对象体系深入分析
2014/10/28 Python
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
公司财务自我评价分享
2013/12/17 职场文书
小学生手册家长评语
2014/04/16 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书
Java实现房屋出租系统详解
2021/10/05 Java/Android