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 相关文章推荐
IE中鼠标经过option触发mouseout的解决方法
Jan 29 Javascript
JavaScript实现同时调用多个函数的方法
Nov 09 Javascript
JS使用JSON作为参数实例分析
Jun 23 Javascript
js+css3实现旋转效果
Jan 20 Javascript
简单实现js选项卡切换效果
Feb 09 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
Feb 22 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
Jul 20 Javascript
js模块加载方式浅析
Aug 12 Javascript
深入浅析Vue中的slots/scoped slots
Apr 03 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
解决vue项目F5刷新mounted里的函数不执行问题
Nov 05 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 jQuery
如何将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
自己动手做一个SQL解释器
2006/10/09 PHP
php的正则处理函数总结分析
2008/06/20 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
经验几则 推荐
2006/09/05 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
angularjs指令之绑定策略(@、=、&)
2017/04/13 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
python3 xpath和requests应用详解
2020/03/06 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
旅游管理专业大学生职业规划书
2014/02/27 职场文书
学雷锋的心得体会
2014/09/04 职场文书
2014最新离职证明范本
2014/09/12 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
联村联户简报
2015/07/21 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
Nginx实现会话保持的两种方式
2022/03/18 Servers
Python作用域和名称空间的详细介绍
2022/04/13 Python