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 的 js 日历 支持时间的获取
Mar 04 Javascript
js 弹出框 替代浏览器的弹出框
Oct 29 Javascript
js中符号转意问题示例探讨
Aug 19 Javascript
javascript实现的简单的表单验证
Jul 10 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
Jil,高效的json序列化和反序列化库
Feb 15 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
微信小程序日期选择器实例代码
Jul 18 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
Dec 11 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 jQuery
JavaScript实现联动菜单特效
Jan 07 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 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实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
jquery获取radio值实例
2014/10/16 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
详解Python3 pandas.merge用法
2019/09/05 Python
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
美国最大点评网站:Yelp
2018/02/14 全球购物
opencv实现图像几何变换
2021/03/24 Python
庆七一活动方案
2014/01/25 职场文书
关于母亲节的感言
2014/02/04 职场文书
房地产项目策划书
2014/02/05 职场文书
办公室副主任职责范本
2014/03/08 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
爱牙日活动总结
2014/08/29 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android
python实现双链表
2022/05/25 Python