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 相关文章推荐
Firefox中autocomplete="off" 设置不起作用Bug的解决方法
Mar 25 Javascript
JS中不为人知的五种声明Number的方式简要概述
Feb 22 Javascript
js 获取时间间隔实现代码
May 12 Javascript
.NET微信公众号开发之创建自定义菜单
Jul 16 Javascript
javascript实现网页背景烟花效果的方法
Aug 06 Javascript
jQuery实现向下滑出的二级菜单效果实例
Aug 22 Javascript
angular.bind使用心得
Oct 26 Javascript
详解JavaScript 中的 replace 方法
Jan 01 Javascript
解析JavaScript中的字符串类型与字符编码支持
Jun 24 Javascript
Angularjs的Controller间通信机制实例分析
Nov 07 Javascript
webpack实现热更新(实施同步刷新)
Jul 28 Javascript
使用vue-router设置每个页面的title方法
Feb 11 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数组中删除元素的实现代码
2012/06/22 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
JavaScript Sort 表格排序
2009/10/31 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
python计算日期之间的放假日期
2018/06/05 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
如何提高python 中for循环的效率
2020/04/15 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
校庆团日活动总结
2014/08/28 职场文书
旷课检讨书500字
2014/10/14 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
历史博物馆观后感
2015/06/05 职场文书
2019假期福利管理制度!
2019/07/15 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
python接口测试返回数据为字典取值方式
2022/02/12 Python