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 如何动态添加、删除class样式方法介绍
Nov 07 Javascript
JavaScript把数组作为堆栈使用的方法
Mar 20 Javascript
js由下向上不断上升冒气泡效果实例
May 07 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
Sep 17 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
Feb 27 Javascript
Vue.js 60分钟快速入门教程
Mar 28 Javascript
全面介绍vue 全家桶和项目实例
Dec 27 Javascript
说说如何在Vue.js中实现数字输入组件的方法
Jan 08 Javascript
JavaScript实现简单贪吃蛇效果
Mar 09 Javascript
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
Apr 27 Javascript
原生js+canvas实现贪吃蛇效果
Aug 02 Javascript
vue video和vue-video-player实现视频铺满教程
Oct 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
PHP中的正规表达式(一)
2006/10/09 PHP
php简单封装了一些常用JS操作
2007/02/25 PHP
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
2018/10/12 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
详解Node项目部署到云服务器上
2017/07/12 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
关于Js中new操作符的作用详解
2021/02/21 Javascript
如何在python中使用selenium的示例
2017/12/26 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
pandas 层次化索引的实现方法
2019/07/06 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
在购买印度民族服饰:Soch
2020/09/15 全球购物
资料员岗位职责
2013/11/17 职场文书
前台文员岗位职责
2013/12/28 职场文书
业务员自荐信范文
2014/04/20 职场文书
班级学习计划书
2014/04/27 职场文书
会计电算化实训报告
2014/11/04 职场文书