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 相关文章推荐
xtree.js 代码
Mar 13 Javascript
JavaScript获取flash对象与网上的有所不同
Apr 21 Javascript
利用原生JavaScript获取元素样式只是获取而已
Oct 08 Javascript
JavaScript中的操作符==与===介绍
Dec 31 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
Sep 14 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
Sep 20 Javascript
jQuery实现可移动选项的左右下拉列表示例
Dec 26 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
Mar 13 jQuery
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
详解小程序如何动态绑定点击的执行方法
Nov 26 Javascript
JS中一些高效的魔法运算符总结
May 06 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
是否存在第一台收音机的说法
2021/03/01 无线电
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
php实现异步数据调用的方法
2015/12/24 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
jquery操作select大全
2014/04/25 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
Python的mysql数据库的更新如何实现
2017/07/31 Python
python队列Queue的详解
2019/05/10 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
python同时遍历两个list用法说明
2020/05/02 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
远程研修随笔感言
2014/02/10 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
财政局个人年终总结
2015/03/03 职场文书
民间借贷借条范本
2015/05/25 职场文书
高中化学教学反思
2016/02/22 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
Redis分布式锁Redlock的实现
2021/08/07 Redis
maven依赖的version声明控制方式
2022/01/18 Java/Android
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL