Vue之路由守卫实现不能后退的问题

news/2024/7/10 1:56:26 标签: Vue, 路由守卫, 禁用返回键, 清除路由

前言

  路由守卫,顾名思义:在路由跳转的时候起到一定的保护作用。比如说:跳转主界面的时候先去登录,登录成功之后才可以进入主界面。就可以使用路由守卫,但是小编今天想要分享的是路由守卫的另一个用处。

需求分析

  假设我现在有A、B、C、D、E、F、G7个界面,在A、B、C三个界面的时候可以正常返回上一个界面,即由A到B到C,也可以由C到B到A,但是从D开始,D可以到E,E可以到F,F可以到G,但是G不能返回F,F不能返回E,E不能返回到D,D不能返回到C,当我在D、E、F、G界面的时候,按手机上的返回键返回到首页,甚至是退出系统。
  PS:有点绕,简单说,就是前三个界面可以返回到上一个界面,后四个界面不能返回到上一个界面,如果按手机上的返回键,只能返回到首页或者是退出这个系统。

需求实现

 思路一:使用replace代替push

  前3个界面可以正常使用push将路由推进去,这样可以正常返回,后面不能返回的时候可以使用replace代替push,这样就不会存上一个路由了,也就返回不了了。

this.$router.replace('D')

  实现效果:第5个界面的确返回不了第4个界面,但是按手机上的返回键的时候,直接就到了第2个界面(因为还存着第2个界面的路由)。

 思路二:使用路由守卫

  利用路由守卫中的函数,实现从那个界面离开跳到那个界面的时候,让他定位到首页。

router.beforeEach((to, from, next) => {
  const fromRoute = ['D','E','F','G']
  const nextRoute = ['B','C']
  if (fromRoute.indexOf(from.name) >= 0){
    if(nextRoute.indexOf(to.name) >=0 ){
      router.replace({ name:'A'})
    }     
  }
  next();
});

  实现效果:实现了自己的需求。

总结

  这次用到了路由守卫,不知道大家还有没有其他的方法呢?比如说禁用手机上的返回键之类的,欢迎交流分享啊!


http://www.niftyadmin.cn/n/1659550.html

相关文章

Vue之input框自动获取焦点+内容形式修改

前言 在项目开发的过程中需要用到input框&#xff0c;限定input框中只能输入数字&#xff0c;当界面一显示的时候input框获得焦点&#xff0c;并调起手机上的数字框。 实现方式 普通输入框 <input type"number" />获取焦点 <input v-focus type"nu…

Vue获取手机设备信息

前言 在移动端项目的开发中&#xff0c;我们需要根据不同的设备来识别不同的用户&#xff0c;那么使用Vue进行项目开发&#xff0c;如何获取对应的手机设备信息呢&#xff1f; Navigator对象 Navigator对象包含有关浏览器的信息&#xff0c;本文获取的设备信息基本上是基于该对…

Javascript基础——深入了解Javascript(函数返回值return、函数传参arguments、兼容各浏览器的单一行间样式、元素的插入删除split/shift/sort/pop)

1、函数返回值 即函数的执行结果&#xff0c;不过return返回的值也可以为空&#xff0c; 若无结果时返回undefined。 function show(){ return 12; //return asbjf; } alert(show()); //var ashow(); //alert(a); 2、函数传参 第一种情况&#xff1a;函数参数已知&am…

设置按钮禁用时的样式

前言 按钮有可用和不可用之分&#xff0c;一般按钮不可用时默认是置灰且不可点击的&#xff0c;但是为了配合整个项目的样式和色调&#xff0c;我们需要对不可用的按钮进行样式的调整。 效果展示 按钮可用时的样式&#xff1a;      按钮不可用时的样式&#xff1a;    …

Javascript基础——定时器的使用及简单小应用(简易时钟1、延时提示框)

1、开启时钟、关闭时钟各有两种方式&#xff1a; 开启&#xff1a;setInterval()、setTimeout() 关闭&#xff1a;clearInterval()、clearTimeout() 同时&#xff0c;setInterval()/setTimeout()开启时钟函数传递两个参数——执行函数/参数、间隔毫秒ms数 这两种方式的区别…

Vue公众号退出微信浏览器

前言 开发了一个项目&#xff0c;需要放到公众号中&#xff0c;在路由跳转之后&#xff0c;此时我们单击手机上的返回键&#xff08;部分手机是左右滑&#xff09;&#xff0c;我们希望退出微信浏览器&#xff0c;这个时候应该如何操作呢&#xff1f; 过程 1.安装微信的SDK n…

Javascript基础——利用定时器实现的图片无缝滚动(offsetLeft)

1、无缝滚动 原理&#xff1a;&#xff08;1&#xff09;让div动起来&#xff0c;让ul一直向左/向右移动&#xff1b; &#xff08;2&#xff09;即利用定时器让物体从左到右或从右到左进行滚动。 采用offsetLeft——如oUl.style.leftoUl.offsetLeft-2px;&#xff08;由左向右…

Javascript基础——利用Dom元素对节点进行创建、插入和删除、文档碎片

1、创建节点——createElement &#xff08;例如在ul元素后创建li元素&#xff09; var oUldocuemnt.getElementById(ul1); var oLioUl.createElement(li); 2、插入节点(两种方式) 第一种——appendChild 前提是在按钮点击创建基础上&#xff0c;进行相对应节点的插入。 …