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 相关文章推荐
用Javascript 获取页面元素的位置的代码
Sep 25 Javascript
JQuery EasyUI 对话框的使用方法
Oct 24 Javascript
在Ubuntu系统上安装Node.JS的教程
Oct 15 Javascript
jquery无限级联下拉菜单简单实例演示
Nov 23 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
Dec 10 Javascript
js学习笔记之事件处理模型
Oct 31 Javascript
javascript设计模式之策略模式学习笔记
Feb 15 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
Sep 10 Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
Dec 11 Javascript
vue 组件销毁并重置的实现
Jan 13 Javascript
微信小程序scroll-view的滚动条设置实现
Mar 02 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
PHP开发框架总结收藏
2008/04/24 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
kmock javascript 单元测试代码
2011/02/06 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
理解javascript对象继承
2016/04/17 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
Python函数式编程指南(二):从函数开始
2015/06/24 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
python支持多线程的爬虫实例
2019/12/21 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
怎样让char类型的东西转换成int类型
2013/12/09 面试题
常见的软件开发流程有哪些
2015/11/14 面试题
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
出国留学计划书
2014/04/27 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
钱学森观后感
2015/06/04 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python