目录
01. vue-router 传参方式
02. 命名路由(params)和查询参数(query)的异同
03. vue-router 懒加载
04. vue-router 响应路由参数的变化
05. vue-router导航钩子的作用是什么?
06. vue-router导航钩子的分类有哪些?
07. 路由跳转导航流程解析,路由A->路由B
08. 全局守卫钩子函数的参数有什么区别?
09. 导航钩子函数参数to、from、next的含义
正文
01. vue-router 传参方式
和name配对的是params,和path配对的是query
- 命名路由
使用命名路由前提是,必须在注册路由的地方给路由命名(name)。命名路由传递参数使用params来传递。
// 编程式导航具体使用this.$router.push({ name: 'news', params: { userId: 123 }})// 声明式导航具体使用click to news page// 接收传递参数{{this.$route.params.userId}}
- 查询参数
使用查询参数就是在路由地址后面带上参数和传统的url参数一致的查询参数使用query传递,同时必须使用path,不能用name。
// 编程式导航具体使用this.$router.push({ path: '/news', query: { userId: 123 }});// 声明式导航具体使用click to news page// 接收参数{{this.$route.query.userId}}
02. 命名路由(params)和查询参数(query)的异同
- 命名路由搭配params传递参数,刷新页面数据会丢失
- 查询参数搭配query传递参数,刷新页面数据不会丢失
- 接收参数都是使用,this.$router+搭配路由的名称,获取参数。
03. vue-router 懒加载
const router = new VueRouter({ routes: [ { path: '/home', name: 'Home', component:() = import('../views/home')} ]})
04. vue-router 响应路由参数的变化
- watch检测
// 监听当前路由发生变化的时候执行watch: { $route(to, from){ console.log(to.path) // 对路由变化做出响应 }}
- 组件内导航钩子函数 beforeRouteUpdate
beforeRouteUpdate(to, from, next){ // to do somethings}
05. vue-router导航钩子的作用是什么?
导航钩子的主要作用就是拦截导航,让他完成跳转或者取消。
06. vue-router导航钩子的分类有哪些?
- 全局守卫
所有路由配置的组件都会触发,简单点说就是触发路由就会触发这些钩子函数。全局守卫钩子函数执行顺序是,beforeEach、beforeResolve、afterEach三个。
- 路由独享守卫
单个路由配置的时候也可以设置的钩子函数,且只能在这个路由下起作用。只有一个钩子函数beforeEnter
- 局部守卫
组件内执行的钩子函数,类似于数组内的生命周期函数,相当于为配置路由的组件添加的生命周期钩子函数。钩子函数按执行顺序包括beforeRouteEnter、beforeRouteUpdate(2.2新增)、beforeRouteLeave三个
07. 路由跳转导航流程解析,路由A->路由B
- A组件的,局部守卫,beforeRouterLeave方法
- 全局守卫,beforeEach
- B组件路由配置的,路由独享守卫,beforeEnter
- B组件的,局部守卫,beforeRouteEnter
- 全局守卫,beforeResolve
- 导航确认
- 全局守卫,afterEach
- 触发DOM更新
08. 全局守卫钩子函数的参数有什么区别?
- beforeEach和beforeResolve,参数相同,都是to、from、next三个
- beforeEach和beforeResolve,都是路由跳转前触发
- afterEach是在路由跳转之后触发,参数只有to、from。
09. 导航钩子函数参数to、from、next的含义
-
- to:去哪里,代表要进入的目标,它是一个路由对象
- from:从哪里来,代表当前正要离开的路由,同样也是一个路由对象
- next:这是一个必须需要调用的方法,而具体的执行效果则依赖next方法调用的参数
写在最后
本文是在准备面试过程中整理的vue面试中可能遇到问题相关系列的第七篇文章,由于以上内容纯手敲,可能有手误的地方,也可能有错误的地方,希望大家指正和见谅。最后,希望与每一个努力的人同行,一起加油!!!
![7fa39b2cc4e03c3b551d6d2f55759007.png](https://img-blog.csdnimg.cn/img_convert/7fa39b2cc4e03c3b551d6d2f55759007.png)