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 相关文章推荐
JavaScript DOM学习第四章 getElementByTagNames
Feb 19 Javascript
jQuery 1.5最新版本的改进细节分析
Jan 19 Javascript
通过javascript获取iframe里的值示例代码
Jun 24 Javascript
基于Javascript实现返回顶部按钮
Feb 29 Javascript
基于javascript的Form表单验证
Dec 29 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
Mar 09 Javascript
React-router 4 按需加载的实现方式及原理详解
May 25 Javascript
最基础的vue.js双向绑定操作
Aug 23 Javascript
JS实现的简单分页功能示例
Aug 23 Javascript
vue-cli脚手架的安装教程图解
Sep 02 Javascript
JS实现可视化文件上传
Sep 08 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
Sep 10 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
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
python正则表达式抓取成语网站
2013/11/20 Python
python实现的重启关机程序实例
2014/08/21 Python
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python装饰器用法实例总结
2018/02/07 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
python导入模块交叉引用的方法
2019/01/19 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
python爬虫之遍历单个域名
2019/11/20 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
python如何查看安装了的模块
2020/06/23 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
挑战杯创业计划书的写作指南
2014/01/07 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
小学班级口号大全
2015/12/25 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书