最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

beforeEach实现导航守卫案列教程

来源:懂视网 责编:小采 时间:2020-11-27 19:49:55
文档

beforeEach实现导航守卫案列教程

beforeEach实现导航守卫案列教程:这次给大家带来beforeEach实现导航守卫案列教程,beforeEach实现导航守卫的注意事项有哪些,下面就是实战案例,一起来看一下。路由跳转前做一些验证,比如登录验证(未登录去登录页),是网站中的普遍需求。对此,vue-route 提供的 beforeRouteU
推荐度:
导读beforeEach实现导航守卫案列教程:这次给大家带来beforeEach实现导航守卫案列教程,beforeEach实现导航守卫的注意事项有哪些,下面就是实战案例,一起来看一下。路由跳转前做一些验证,比如登录验证(未登录去登录页),是网站中的普遍需求。对此,vue-route 提供的 beforeRouteU

这次给大家带来beforeEach实现导航守卫案列教程,beforeEach实现导航守卫的注意事项有哪些,下面就是实战案例,一起来看一下。

路由跳转前做一些验证,比如登录验证(未登录去登录页),是网站中的普遍需求。对此,vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards)。

导航守卫(navigation-guards)这个名字,听起来怪怪的,但既然官方文档是这样翻译的,就姑且这么叫吧。

贴上文档地址:https://router.vuejs.org/zh-cn/advanced/navigation-guards.html

先来摘抄一段文档中beforeRouteUpdate 的用法:

你可以使用 router.beforeEach 注册一个全局前置守卫:

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

当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于 等待中。

每个守卫方法接收三个参数:

to: Route: 即将要进入的目标 路由对象

from: Route: 当前导航正要离开的路由

next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。

next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。

next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

next(error): (2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 router.onError() 注册过的回调。

确保要调用 next 方法,否则钩子就不会被 resolved。

下面写一个例子,上一篇博客中我们的账户页,包括课程和订单,都需要在跳转前判断是不是已登录;已登录的情况再去登录页,跳转至首页:

const vueRouter = new Router({ 
 routes: [ 
 //...... 
 { 
 path: '/account', 
 name: 'account', 
 component: Account, 
 children: [ 
 {name: 'course', path: 'course', component: CourseList}, 
 {name: 'order', path: 'order', component: OrderList} 
 ] 
 } 
 ] 
}); 
vueRouter.beforeEach(function (to, from, next) { 
 const nextRoute = [ 'account', 'order', 'course']; 
 const auth = store.state.auth; 
 //跳转至上述3个页面 
 if (nextRoute.indexOf(to.name) >= 0) { 
 //未登录 
 if (!store.state.auth.IsLogin) { 
 vueRouter.push({name: 'login'}) 
 } 
 } 
 //已登录的情况再去登录页,跳转至首页 
 if (to.name === 'login') { 
 if (auth.IsLogin) { 
 vueRouter.push({name: 'home'}); 
 } 
 } 
 next(); 
});

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

JS怎么储存原始值与引用值

JS用正则判断出生日期

文档

beforeEach实现导航守卫案列教程

beforeEach实现导航守卫案列教程:这次给大家带来beforeEach实现导航守卫案列教程,beforeEach实现导航守卫的注意事项有哪些,下面就是实战案例,一起来看一下。路由跳转前做一些验证,比如登录验证(未登录去登录页),是网站中的普遍需求。对此,vue-route 提供的 beforeRouteU
推荐度:
标签: 导航 教程 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top