导航:路由正在发生变化
导航垨卫主要用来通过跳转或取消的方式守卫导航。
导航守卫被分成三种:全局的、单个路由独享的、组件内的
是指路由实例上直接操作的鉤子函数,触发路由就会触发这些钩子函数
在路由跳转前触发,一般被用于登录验证
- from 即将要离开的路由对象
- next 三个参数中最重要的参数。
- 必须调用next()才能继续往下执行一个钩子,否则路由跳转会停止
- 若要中断当前的导航可以调用next(false)。
- 可以使用next跳转到一个不同的地址终端當前导航,进入一个新的导航next参数值和$routet.push一致。
- next(error)2.4+,如果传入的参数是一个Error实例则导航会被终止,且该错误会被传递给router.onError() 注册过的回调
囷boforeEach类似,路由跳转前触发
和beforeEach的区别:在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后解析守卫就被调用。
和beforeEach相反路由跳转完成后触发。
是指在单个路由配置的时候也可以设置的钩子函数
是指在组件内执行的钩子函数,类似于组件内的生命周期相当于为配置路由的组件添加的生命周期钩子函数。
在该守卫内访问不到组件的实例this值为undefined。在这个钩子函数中可以通过传一个回调給 next来访问组件实例。在导航被确认的时候执行回调并且把组件实例作为回调方法的参数,可以在这个守卫中请求服务端获取数据当成功获取并能进入路由时,调用next并在回调中通过 vm访问组件实例进行赋值等操作(next中函数的调用在mounted之后:为了确保能对组件实例的完整访问)。
在当前路由改变时并且该组件被复用时调用,可以通过this访问实例
导航离开该组件的对应路由时调用,可以访问组件实例this
- 在失活嘚组件里调用离开守卫。