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分割字符串的方法
Jun 24 Javascript
AngularJS控制器继承自另一控制器
May 09 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
May 16 Javascript
javascript轮播图算法
Oct 21 Javascript
JS简单获得节点元素的方法示例
Feb 10 Javascript
Vue项目中设置背景图片方法
Feb 21 Javascript
详解extract-text-webpack-plugin 的使用及安装
Jun 12 Javascript
Angular单元测试之事件触发的实现
Jan 20 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 Javascript
基于原生js实现判断元素是否有指定class名
Jul 11 Javascript
JavaScript代码模拟鼠标自动点击事件示例
Aug 07 Javascript
JavaScript模拟实现网易云轮播效果
Apr 04 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
ThinkPHP中I(),U(),$this->post()等函数用法
2014/11/22 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
JS重载实现方法分析
2016/12/16 Javascript
angular分页指令操作
2017/01/09 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
python 自动提交和抓取网页
2009/07/13 Python
python笔记(2)
2012/10/24 Python
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
简单实现python数独游戏
2018/03/30 Python
简单了解如何封装自己的Python包
2020/07/08 Python
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
外语专业毕业生自我评价分享
2013/10/05 职场文书
物业管理工作方案
2014/05/10 职场文书
城市创卫标语
2014/06/17 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
开国大典观后感
2015/06/04 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript