上一篇总结,我们总结了路由对象的构建选项。那么这一章我们去了解一下路由对象的实例属性和实例方法。
实例属性
Router 的实例属性是在 Router 对象创建完成之后,在对象调用的属性,只有三个实例属性:
router.app
:配置了 router 的 Vue 根实例router.mode
:路由使用的模式,对应构建选项中的mode
选项router.currentRoute
:当前路由对应的路由信息对象。路由对象详情见下。
实例方法
router.beforeEach
、router.beforeResolve
和router.afterEach
:这三个方法主要用于导航守卫。具体的使用规则见进阶篇(一)router.push
、router.replace
和router.go
:这三个方法主要用于动态的导航到一个新 URL。具体的使用规则见基础篇(五)router.back
和router.forward
:这两个方法和JavaScript中window.history
对象的forward
和back
方法对应。router.back
在history记录中后退一步,等效于go(-1);router.forward
在history记录中前进一步,等效于go(1)router.addRoutes
:动态添加更多的路由规则,参数必须时一个符合routes构建选项要求的数组;router.onReady(callback,errorCallback)
:在路由完成初始导航时调用,这意味着它可以解析所有的异步进入钩子和路由初始化相关联的异步组件。两个参数都是回调函数,第一个在运行成功之后调用,第二个在初始化路由解析运行出错时被调用;router.onError(callback)
:注册一个回调,该回调会在路由导航过程中出错时被调用;router.resolve(location, current?, append?)
:解析一个URL地址;
路由对象
一个路由对象 (route object) 表示当前激活的路由的状态信息,包含了当前 URL 解析得到的信息,还有 URL 匹配到的路由记录 (route records)。路由对象是不可变 (immutable) 的,每次成功的导航后都会产生一个新的对象。
路由对象出现的地方
- 在组件内部中,可以使用
this.$route
调用,这个表示当前激活的路由信息对象 - 在导航守卫中,参数from和to都是路由对象
- 在Router 构建选项 scrollBehavior 中参数 from和 to 都是路由对象
路由对象属性
- $route.path:字符串,对应当前路由的路径,总是解析为绝对路径,如 “/foo/bar”。
- $route.params:一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。
- $route.query:一个 key/value 对象,表示 URL 查询参数,如果没有查询参数,则是个空对象。
- $route.hash:当前路由的 hash 值 (带 #) ,如果没有 hash 值,则为空字符串。
- $route.fullPath:完成解析后的 URL,包含查询参数和 hash 的完整路径。
- $route.matched:一个数组,包含当前路由的所有嵌套路径片段的路由记录 。路由记录就是 routes 配置数组中的对象副本
- $route.name:当前路由的名称,如果有的话
- $route.redirectedFrom:如果存在重定向,即为重定向来源的路由的名字
组件
在组件中我们也有一点使用的路由的API。
- 在组件内部通过
this.$router
可以访问到router 实例。 this.$route
可以访问到当前激活的路由信息对象- 三个导航守卫:
beforeRouteEnter
、beforeRouteUpdate
和beforeRouteLeave
。具体使用详情见进阶篇(一)