vue路由导航守卫及前置后置钩子函数参数详解

首先构建一个测试demo如下图:

接着来探讨路由配置界面

import Vue from ‘vue‘
import Router from ‘vue-router‘
// import HelloWorld from ‘@/components/HelloWorld‘

Vue.use(Router)

const router = new Router({
  routes: [{
    path: ‘/‘,
    name: ‘HelloWorld‘,
    component: resolve => require([‘@/components/HelloWorld‘], resolve)
  }, {
    path: ‘/login‘,
    name: ‘login‘,
    component: resolve => require([‘@/components/login‘], resolve)
  }, {
    path: ‘/navmenu‘,
    name: ‘navMenu‘,
    component: resolve => require([‘@/components/navMenu‘], resolve),
    meta: {
      title: ‘查看钩子beforeEach作用‘,
      index: 2,
      login: true
    }
  }]
})

// 进入路由前方法勾子
router.beforeEach((to, from, next) => {
  console.log(to, ‘前置第一个参数‘)
  console.log(from, ‘前置第二个参数‘)
  console.log(next, ‘前置第三个参数‘)
  /
    to 目标路由
    from 源路由
    next 跳转到下一个路由
  */
  if (to.meta.login) {
    // 如果需要,则跳转到登录页
    next(‘/login‘);
  } else {
    // 如果不需要,则直接跳转到对应路由
    next();
  }
});
// 进入路由后方法勾子
router.afterEach((to, from) => {
  console.log(to, ‘后置第一个参数‘)
  console.log(from, ‘后置第二个参数‘)
  /*
    to 目标路由
    from 源路由
  */
  if (to.meta.title) {
    console.log(to.meta.title);
  } else {
    console.log(‘暂无名称‘);
  }
});

export default router

可以见到控制台

当点击事件发生后(也就是第一个页面向第二个页面跳转后)

由此看出从第一个页面点击跳转后触发了两次前置钩子函数并且点击后校验是否需要登入直接进入login页面可用于后台管理权限控制页面是否需要登入权限,一次后置钩子函数;可以清楚看到里面的参数变化;

原文地址:https://www.cnblogs.com/lhl66/p/9195787.html

时间: 2024-07-29 21:24:28

vue路由导航守卫及前置后置钩子函数参数详解的相关文章

浏览器内置Console函数使用详解

浏览器内置Console函数比较好用:Chrome 和 FireFox(Firebug插件) 利用此功能可以像直接在面板里面运行JS一样(写法不同而已) 一.显示信息的命令 Firebug内置一个console对象,提供5种方法,用来显示信息. 最简单的方法是console.log(),可以用来取代alert()或document.write().比如,在网页脚本中使用console.log("Hello World"),加载时控制台就会自动显示如下内容. 另外4种写法: consol

vue之路由导航守卫-全局前置守卫

一.使用方式 全局前置守卫用于在路由配置生效之前进行一些动作,可以使用 router.beforeEach 注册一个全局前置守卫: const router = new VueRouter({ ... }) router.beforeEach((to, from, next) => { // ... }) 参数: to: Route: 即将要进入的目标 路由对象 from: Route: 当前导航正要离开的路由 next: Function: 一定要调用该方法来 resolve 这个钩子.执行效

Vue的钩子函数[路由导航守卫、keep-alive、生命周期钩子]

前言 说到Vue的钩子函数,可能很多人只停留在一些很简单常用的钩子(created,mounted),而且对于里面的区别,什么时候该用什么钩子,并没有仔细的去研究过,且Vue的生命周期在面试中也算是比较高频的考点,那么该如何回答这类问题,让人有眼前一亮的感觉呢... 前端进阶积累.公众号.GitHub Vue-Router导航守卫: 有的时候,我们需要通过路由来进行一些操作,比如最常见的登录权限验证,当用户满足条件时,才让其进入导航,否则就取消跳转,并跳到登录页面让其登录. 为此我们有很多种方法

vue2路由导航守卫(钩子函数)

所谓的Vue路由导航守卫,也就是我们常说的生命周期钩子函数,钩子函数的意思就是在特定的时刻,Vue会自动触发这个方法,我们可以通过这些个钩子函数,实现一些功能,比如,某些页面需要登录后才可以访问,某些页面需要用户达到什么等级才可以访问,又或者是跳转页面后修改一些信息等等,我们就可以通过路由导航守卫来拦截并做相应的处理 全局守卫: 挂载在router实例上 全局前置钩子 注意:参数或查询的改变并不会触发进入/离开的导航守卫.你可以通过观察 $route 对象来应对这些变化,或使用 beforeRo

挂载路由导航守卫 router

import Vue from 'vue' import Router from 'vue-router' import Login from './components/Login.vue' import Home from './components/Home.vue' import Welcome from './components/Welcome.vue' import Users from './components/user/Users.vue' import Rights fro

前置后置自增自减操作

class Int { friend ostream& operator<<(ostream& os, const Int& i); friend istream& operator>>(istream& is, Int& i); friend bool operator<(const Int& a, const Int& b); private: int value; public: Int():value(0

前置后置单目运算符重载函数返回值用法

Clock& Clock::operator ++() //前置单目运算符重载函数{Second++;if(Second>=60){Second=Second-60;Minute++;if(Minute>=60){Minute=Minute-60;Hour++;Hour=Hour%24;}}return *this;}//后置单目运算符重载Clock Clock::operator ++(int) //注意形参表中的整型参数{Clock old=*this;++(*this);retu

Nginx内置变量以及日志格式变量参数详解

Nginx内置变量以及日志格式变量参数详解 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为空字符串 $uri #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改,$uri不包含主机名,如"/foo/bar.html". $d

Win7 在安装vs2010后向sql2008添加SQL_Server_Management详解

我们在安装好VS2010后,会发现VS2010自带了sql server 2008,但自带的版本缺少SQL_Server_Management,所以我们得自己安装这个,在网上找到了比较详细的步骤,如下: 安装的先决条件: 1.SQLManagementStudio_x86_CHS,这个可以自己到官网下载,如果需要的朋友可以给我留言 2.系统安装有.Net FrameWork3.5 sp1,我自己电脑上安装的是.Net FrameWork4 1.升级现有express(单击开始→Microsoft