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 相关文章推荐
jQuery循环滚动展示代码 可应用到文字和图片上
May 11 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
Mar 19 Javascript
完善的jquery处理机制
Feb 21 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
Aug 25 Javascript
前端面试知识点锦集(JavaScript篇)
Dec 28 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
Mar 09 Javascript
纯js实现的积木(div层)拖动功能示例
Jul 19 Javascript
layer弹出层倒计时关闭的实现方法
Sep 27 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
Feb 07 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
Aug 10 Javascript
JS继承最简单的理解方式
Mar 31 Javascript
如何将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 分页类(模仿google)-面试题目解答
2009/09/13 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
js以对象为索引的关联数组
2010/07/04 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
python爬虫之自动登录与验证码识别
2020/06/15 Python
Django中的cookie和session
2019/08/27 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
python os.listdir()乱码解决方案
2021/01/31 Python
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
HEMA英国:荷兰原创设计
2018/08/28 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
物流司机岗位职责
2013/12/28 职场文书
服装设计专业自荐信
2014/06/17 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
年终工作总结范文
2019/06/20 职场文书
Python matplotlib绘制雷达图
2022/04/13 Python
mysql数据库如何转移到oracle
2022/12/24 MySQL