>

乐百家前段:vue2.0 达成导航守卫的实际用法(路

- 编辑:乐百家599手机首页 -

乐百家前段:vue2.0 达成导航守卫的实际用法(路

对此,vue-route 提供的 beforeRouteUpdate 能够壹本万利地促成导航守卫(navigation-guards)。

对此,vue-route 提供的 beforeRouteUpdate 能够便宜地落到实处导航守卫(navigation-guards)。

各样守卫方法接收几个参数:

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

各种守卫方法接收八个参数:

next(): 实行管道中的下叁个钩子。假诺整个钩子试行完了,则导航的意况便是confirmed (确认的)。

当一个导航触发时,全局前置守卫遵照创造顺序调用。守卫是异步深入分析实践,此时导航在全部守卫 resolve 完以前一贯处在 等待中。

正如其名,vue-router 提供的导航守卫首要用于通过跳转或撤除的主意守护导航。有各类机会植入路由导航进度中:全局的, 单个路由独享的, 恐怕零部件级的。

  1. to: Route: 即就要进入的靶子 路由对象
  2. from: Route: 当前导航正要离开的路由
  3. next: Function: 一定要调用该方式来 resolve 这一个钩子。试行职能依赖next 方法的调用参数。
    1. next(): 进行政管理道中的下一个钩子。若是全部钩子执行完了,则导航的情事便是confirmed (确认的)。
    2. next(false): 中断当前的导航。倘诺浏览器的 UKugaL 改造了(或许是用户手动依旧浏览器后退按键),那么 ULANDL 地址会重新初始化到 from 路由相应的地点。
    3. next('/') 也许 next({ path: '/' }): 跳转到2个不等的地点。当前的领航被搁浅,然后开始展览二个新的领航。
    4. next(error): (二.肆.0 ) 固然传入 next 的参数是三个 Error 实例,则导航会被终止且该错误会被传送给 router.onError() 注册过的回调。

您大概感兴趣的文章:

  • VUE二.0中Jsonp的施用办法
  • vue二.0 完结导航守卫的实际用法(路由守卫)
  • vue2.0贯彻移动端的输入框实时追寻更新列表功用
  • vue2.0 从插件开辟到npm公布的亲自去做代码
  • Vue二.0兑现调用录像头进行拍照功能exif.js完成图片上传功用
  • 详解Vue2.0布署mint-ui踩过的那多少个坑
  • vue二.0 移动端达成下拉刷新和上拉加载越多的言传身教
  • vue二.0 vuex localStorage代办事项应用完毕详解

next: Function: 一定要调用该办法来 resolve 那一个钩子。试行遵守依赖 next 方法的调用参数。

next(): 进行政管理道中的下一个钩子。假如全体钩子推行完了,则导航的场地便是 confirmed (确认的)。

贴上文书档案地址:

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

你大概感兴趣的稿子:

  • 应用vue-router beforEach完毕剖断用户登六跳转路由筛选功效
  • Vue Flask完结轻巧的登6验证跳转的亲自过问代码
  • vue实现登陆后页面跳转到以前页面
  • Vue利用路由钩子token过期后跳转到登六页的实例
  • vue路由跳转时剖断用户是还是不是登六功效的兑现
  • Vue-router路由决断页面未登入跳转到登录页面包车型客车实例
  • vue实现未登入跳转到登入页面包车型大巴法子

足见重定向是不吻合化解这么些难题的。那时就用到了vue路由的导航守卫。导航守卫的兑现格局如下:

import Vue from 'vue';
import Router from 'vue-router';
import LoginPage from '@/pages/login';
import HomePage from '@/pages/home';
import GoodsListPage from '@/pages/good-list';
import GoodsDetailPage from '@/pages/good-detail';
import CartPage from '@/pages/cart';
import ProfilePage from '@/pages/profile';
Vue.use(Router)
const router = new Router({
 routes: [
  {
   path: '/', // 默认进入路由
   redirect: '/home'  //重定向
  },
  {
   path: '/login',
   name: 'login',
   component: LoginPage
  },
  {
   path: '/home',
   name: 'home',
   component: HomePage
  },
  {
   path: '/good-list',
   name: 'good-list',
   component: GoodsListPage
  },
  {
   path: '/good-detail',
   name: 'good-detail',
   component: GoodsDetailPage
  },
  {
   path: '/cart',
   name: 'cart',
   component: CartPage
  },
  {
   path: '/profile',
   name: 'profile',
   component: ProfilePage
  },
  {
   path: '**',  // 错误路由
   redirect: '/home'  //重定向
  },
 ]
});

// 全局路由守卫
router.beforeEach((to, from, next) => {
 console.log('navigation-guards');
 // to: Route: 即将要进入的目标 路由对象
 // from: Route: 当前导航正要离开的路由
 // next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

 const nextRoute = ['home', 'good-list', 'good-detail', 'cart', 'profile'];
 let isLogin = global.isLogin; // 是否登录
 // 未登录状态;当路由到nextRoute指定页时,跳转至login
 if (nextRoute.indexOf(to.name) >= 0) { 
  if (!isLogin) {
   console.log('what fuck');
   router.push({ name: 'login' })
  }
 }
 // 已登录状态;当路由到login时,跳转至home 
 if (to.name === 'login') {
  if (isLogin) {
   router.push({ name: 'home' });
  }
 }
 next();
});

export default router;

next: Function: 一定要调用该方法来 resolve 那个钩子。奉行效劳看重 next 方法的调用参数。

您可以采纳 router.beforeEach 注册二个大局前置守卫:

重定向乐百家前段,

路由跳转前做一些验证,举例登陆验证,是网址中的普及必要。

导航守卫(navigation-guards)那些名字,听上去怪怪的,但既然官方文书档案是这么翻译的,就姑且这么叫吧。

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(); 
}); 

当一个导航触发时,全局前置守卫根据创立顺序调用。守卫是异步分析试行,此时导航在有着守卫 resolve 完从前平昔处在 等待中。

你可以选用 router.beforeEach 注册贰个大局前置守卫:

每一种守卫方法接收四个参数:

总结

据说vue官方文书档案,对于重定向有详实的亲自去做,可是关于利用办法动态重定向的描述却非常少,重定向部分的叙述如下:

下边写一个事例:

路由跳转前做一些验证,比如登陆验证,是网址中的遍布须要。

贴上文书档案地址:

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

以上就是本文的全体内容,希望对大家的求学抱有援助,也期待我们多多协理脚本之家。

您能够利用 router.beforeEach 注册2个大局后置守卫:

如上所述是笔者给大家介绍的运用vue-route 的 beforeEach 达成导航守卫(路由跳转前验证登入)功用,希望对大家全体辅助,如若大家有此外疑问请给本身留言,我会及时过来我们的。在此也非常谢谢大家对台本之家网址的援救!

您可能感兴趣的稿子:

  • 利用vue-route 的 beforeEach 完毕导航守卫(路由跳转前验证登入)作用
  • VueRouter导航守卫用法详解
  • vue二.0 落成导航守卫的现实性用法(路由守卫)

本文由乐百家前段发布,转载请注明来源:乐百家前段:vue2.0 达成导航守卫的实际用法(路