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 相关文章推荐
用js遍历 table的脚本
Jul 23 Javascript
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
Mar 28 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
Nov 14 Javascript
Javascript仿PHP $_GET获取URL中的参数
May 12 Javascript
基于编写jQuery的无缝滚动插件
Aug 02 Javascript
AngularJS入门之动画
Jul 27 Javascript
使用Xcache缓存器加速PHP网站的配置方法
Apr 22 Javascript
详解vue-cli + webpack 多页面实例应用
Apr 25 Javascript
vue-router单页面路由
Jun 17 Javascript
详解Vue之事件处理
Jul 10 Javascript
在vue中实现嵌套页面(iframe)
Jul 30 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 adodb连接不同数据库
2009/03/19 PHP
php中显示数组与对象的实现代码
2011/04/18 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
PHP管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
php像数组一样存取和修改字符串字符
2014/03/21 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
phpwind放自动注册方法
2006/12/02 Javascript
javascript add event remove event
2008/04/07 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
python绘制雪景图
2019/12/16 Python
Django异步任务线程池实现原理
2019/12/17 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
C#笔试题集合
2013/06/21 面试题
缴纳养老保险的证明
2014/01/10 职场文书
生日寿宴答谢词
2014/01/19 职场文书
植树造林的宣传标语
2014/06/23 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
八月迷情观后感
2015/06/11 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis