需求:
当点击首页时,上面显示首页;点击关于时,上面显示关于。
解决方法一:
- 这里显示的是title
- 生命周期函数
created(){}
当组件被创建时会回调这个生命周期函数
mounted(){}
当template模板相关的东西被挂载到DOM上面时回调这个生命周期函数
updated(){}
在页面发生更新时执行这个生命周期函数
这里我们只需要使用created(){}
- 将所有组件都添加上,就可以实现需求
解决方法二:
上面的方法很麻烦,代码复用性不高而且不利于维护,下面是较简便的方法
- 在路由映射中定义meta,meta中定义title名称
- 使用router中的beforeEach方法(导航钩子),这里的next()一定要写,否则会报错
导航钩子的三个参数解析
to:即将要进入的目标的路由对象
from:当前导航即将要离开的路由对象
next:调用该方法后,才能进入下一个钩子
3. 可以显示
4. 但是有一个bug,刚进来时会显示undefined
5. 我们进入首页组件中,打印一下this.$route
,可以看到meta为空
6. 我们进入到matched中,进入第一个,可以找到meta: {title: "首页"}
7. 所以说,我们需要改一下
8. 这样就可以了