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 上传图片预览问题
Dec 06 Javascript
js自定义事件代码说明
Jan 31 Javascript
js关闭模态窗口刷新父页面或跳转页面
Dec 13 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
Oct 16 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
May 05 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
Sep 03 Javascript
jQuery功能函数详解
Feb 01 Javascript
在JS方法中返回多个值的方法汇总
May 20 Javascript
JS与jQ读取xml文件的方法
Dec 08 Javascript
Ajax跨域实现代码(后台jsp)
Jan 21 Javascript
bootstrap+jQuery实现的动态进度条功能示例
May 25 jQuery
vue 计时器组件的实现代码
Sep 14 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 at(@)符号的用法简介
2009/07/11 PHP
php 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
yii中widget的用法
2014/12/03 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
WordPress网站性能优化指南
2015/11/18 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
python删除某个目录文件夹的方法
2020/05/26 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
大学生的自我鉴定范文
2014/01/21 职场文书
20年同学聚会感言
2014/02/03 职场文书
国庆宣传标语
2014/06/30 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
销售合作意向书范本
2015/05/08 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
七年级作文之下雨天
2019/12/23 职场文书
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers