vueRouter — 动态路由
最后更新于:2022-04-02 08:08:04
>[success] # 动态路由
~~~
1.动态路由 我个人感觉是为了更好的适应'RESTful '这种路由风格,举个例
子,下面两个路由经过观察唯一不样的位置就是后面,如果我们按照某种规则
去匹配这种路由就可以使用动态路由:'/user/foo' 和 '/user/bar'
2.一个'路径参数'使用冒号 : 标记
~~~
>[danger] ##### 官方给出一个动态参数表格
| 模式 | 匹配路径 | $route.params |
| --- | --- | --- |
| /user/:username | /user/evan | `{ username: 'evan' }` |
| /user/:username/post/:post\_id | /user/evan/post/123 | `{ username: 'evan', post_id: '123' }` |
>[danger] ##### 动态路由的使用
~~~
Examples
';
// 动态路径参数 以冒号开头
sapp
{{$route.params.id }}
~~~
>[danger] ##### 注意点-- 动态参数变化组价不会被渲染
~~~
1.官方给出的解释:提醒一下,当使用路由参数时,例如从 /user/foo 导航到
/user/bar,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起
销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子
不会再被调用。
2.简单的说就是不会触发生命周期初始化时候从'beforeCreate'到'mounted'这个
区间的生命周期,而是认为是相同组件每次只会更新'beforeUpdated'和'updated'
3.一般情况下在一些初始化操作例如 接口请求的时候会在'beforeCreate'到'mounted'这个
区间的生命周期来请求接口,因为动态路由的缘故从 /user/foo 导航到 /user/bar 是不会在
触发这些生命周期相对的替代办法
3.1.使用'watch' 去监听重新触发
3.2.用'beforeRouteUpdate'导航守卫
~~~
* watch
~~~
const User = {
template: '...',
watch: {
'$route' (to, from) {
// 对路由变化作出响应...
}
}
}
~~~
* beforeRouteUpdate
~~~
const User = {
template: '...',
beforeRouteUpdate (to, from, next) {
// react to route changes...
// don't forget to call next()
}
}
~~~