路由守卫(Route Guard)是在路由切换时执行的一些特定函数,这些函数可以在路由导航的不同阶段被调用,以执行特定的逻辑来控制和管理路由的切换
通过编写和注册这些守卫函数,我们可以实现对路由的拦截、控制和管理,从而实现一些安全控制、权限控制、页面跳转控制等功能
导航守卫可以分为、和
路由守卫是在导航过程中按照一定的顺序执行的异步函数。在所有守卫函数 resolve 之前,导航处于等待状态
开发者可以创建多个守卫函数,并将它们组合成一个数组。当一个导航触发时,这些守卫函数会按照顺序被依次调用
如果在守卫函数执行过程中遇到了意外情况,可能会抛出一个 ,这会取消导航并调用 注册的回调函数
每个守卫函数接收两个参数:
- : 需要前往的路由对应的标准化路由对象 --- 需要前往的路由
- : 当前正要离开的路由对应的标准化路由对象 --- 当前正在离开的路由
守卫函数可以返回以下值:
- : 取消当前的导航
- 或 : 正常执行当前导航
- 一个路由字符串地址或路由对象: 跳转到返回的新路由
vue-router有三种全局路由守卫
1. 所有的组件内守卫执行完毕
2. 异步路由组件已经解析完成
方法可以确保路由组件及组件内回调被执行完成后再执行渲染
可以避免在渲染页面之前异步组件还未加载完成的情况
所以这个回调更多的是vue内部被回调
全局后置钩子 在路由跳转完成后执行的回调
注意: 此时导航已经完成,无法通过这个回调来改变导航
所以它不是守卫函数,只是一个钩子函数
比如页面滚动到指定位置、更新页面标题等
是路由独享守卫,该守卫只有在进入路由时触发,不会在 、 或 改变时触发
也可以将一个函数数组传递给 以方便在不同路由中复用守卫函数
组件内守卫指的是在内直接定义的导航守卫函数
也就是说组件内守卫只能在路由组件中使用,在渲染到的子组件中是不存在组件内守卫的
不可以访问组件实例
当前路由改变,但是该组件被复用时调用
如 和 之间之间进行跳转的时候
可以访问组件实例
离开该组件的时候
可以访问组件实例
是唯一一个支持给 传递回调的守卫
是一个函数,在被回调的时候,会传入组件实例作为方法的参数
离开守卫 通常用来预防用户在离开界面时没有保存修改
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qdvuejs/21605.html