vue router导航守卫(router.beforeEach())的使用详解


Posted in Javascript onApril 19, 2019

导航守卫

        导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。(记住参数或查询的改变并不会触发进入/离开的导航守卫。你可以通过观察$route对象来应对这些变化,或使用beforeRouteUpdate的组件内守卫。)

好久没写一些东西了,总是感觉有啥缺少的。~~~~恰好碰到最近在写一个移动端项目,遇到了如何使同一个链接在不同条件下跳转到不同路由组件问题,譬如大家经常看到手机中没登录跳转登录页,登陆后跳转个人信息页等。废话不多说了,直接上图:

vue router导航守卫(router.beforeEach())的使用详解

这是没登录状态,点击下面mine按钮跳转至登录页

vue router导航守卫(router.beforeEach())的使用详解

这个是我登录了自己的账号后,再次点击mine按钮会跳转至个人信息页面

好了,看到了这个效果今天咱们来实现下

实现方法

我们点击下面mine按钮其实是路由跳转,所以我们需要在跳转路由之前做一个判断,根据不同的条件让这个链接跳转到不同路由。这时候我们vue-router中的导航守卫就闪亮登场了~~~

先看官方文档: https://router.vuejs.org/zh-cn/advanced/navigation-guards.html

vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。

官方文档中说了很清楚,我们可以使用 router.beforeEach 注册一个全局前置守卫:

在router文件夹下index.js中添加以下代码

router.beforeEach((to, from, next) => {
 // ...
})

vue router导航守卫(router.beforeEach())的使用详解

这里对router.beforeEach方法的每个参数做简要的解释。

“to”: 即将要进入的目标 路由对象;(这个对象中包含name,params,meta等属性)

"from": 当前导航正要离开的路由对象;(这个对象中包含name,params,meta等属性)

“next”: Function: 确保要调用 next 方法,否则钩子就不会被 resolved。这个当中还可以传一些参数,具体可以看官方文档。

我们在代码中做了一个判断 if (to.name === 'Mine') ,也就是说当我们要跳转的路由对象是Mine时候,才会进入导航守卫中判断条件,当我们点击其他链接跳转其他页正常,因为我们只有mine按钮链接对应的情况有两种。

// 登陆/注册就去用户详情页
 if (localStorage.getItem('userID')) {
  router.replace('/myinfo')
 }

这段代码就是判断当用户点击了mine,我们需要判断用户是否是登录还是未登录了。因为之前用户登录的时候我将用户的userID保存到了localStorage中,所以只需要判断localStorage中是否有用户的userID,来判断用户是否登录。这里情况两个,未登录去登录页,登录去个人信息页

好了,通过简单的配置使用,我们就可以愉快的根据不同的情况来实现路由跳转不同组件了~

哈哈,很简单吧,欢迎大家一起交流学习前端知识。我在GitHub上等你一起呦
~

说明

文章因为是在工作之余写的,可能时间匆忙,有些错别字或者语法等低级错误,欢迎留言指出,谢谢。。

同时在GitHub上也可以一起交流交流~~~

GitHub 走你

总结

以上所述是小编给大家介绍的vue router导航守卫(router.beforeEach())的使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
myeclipse安装jQuery插件的方法
Mar 29 Javascript
jquery单行文字向上滚动效果示例
Mar 06 Javascript
通过伪协议解决父页面与iframe页面通信的问题
Apr 05 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
浅谈JavaScript中的对象及Promise对象的实现
Nov 15 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
Nov 27 Javascript
基于jQuery实现弹幕APP
Feb 10 Javascript
Vue中使用vee-validate表单验证的方法
May 09 Javascript
layui框架table 数据表格的方法级渲染详解
Aug 19 Javascript
详解vue配置后台接口方式
Mar 29 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
Jul 05 Javascript
vue总线机制(bus)知识点详解
May 10 Javascript
this.$toast() 了解一下?
Apr 18 #Javascript
Vue-input框checkbox强制刷新问题
Apr 18 #Javascript
vue axios封装及API统一管理的方法
Apr 18 #Javascript
Vue组件系列开发之模态框
Apr 18 #Javascript
详解vue的数据劫持以及操作数组的坑
Apr 18 #Javascript
微信小程序 setData 对 data数据影响问题
Apr 18 #Javascript
详解JavaScript中关于this指向的4种情况
Apr 18 #Javascript
You might like
星际原理概述
2020/03/04 星际争霸
PHP ajax 分页类代码
2008/11/13 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
php车辆违章查询数据示例
2016/10/14 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
javascript如何写热点图
2015/12/08 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
python常用知识梳理(必看篇)
2017/03/23 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
python实现局域网内实时通信代码
2019/12/22 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
django rest framework serializers序列化实例
2020/05/13 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
工伤赔偿协议书
2014/04/15 职场文书
2014年老干部工作总结
2014/11/21 职场文书
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技