为什么使用导航守卫
■我们来考虑一个需求: 在一个SPA应用中, 如何改变网页的标题呢?
- 网页标题是通过
来显示的,但是SPA只有一一个固定的HTML,切换不同的页面时,标题并不会改变. - 但是我们可以通过JavaScript来修改
的内容 window.document.title = '新的标题' - 那么在Vue项目中,在哪里修改?什么时候修改比较合适呢?
■普通的修改方式:
- 我们比较容易想到的修改标题的位置是每-个路由对应的组件.vue文件中
- 通过mounted声明周期函数,执行对应的代码进行修改即可
- 但是当页面比较多时,这种方式不容易维护(因为需要在多个页面执行类似的代码)
■有没有更好的办法呢?使用导航守卫即可
■什么是导航守卫?
- vue-router提供的导航守卫主要用来监听监听路由的进入和离开的.
- vue-router提供了beforeEach和afterEach的钩子函数,它们会在路由即将改变前和改变后触发.
导航守卫的使用
■我们可以通过beforeEach来完成标题的修改
beforeEach
要求我们传入一个回调函数。函数中由三个参数,to、from、next
- to:即将要进入的目标路由的对象
- from:当前导航要离开的路由对象
- next:调用该方法后才能进入下一个钩子
补充:afterEach只需要to和from两个参数,不需要调用next
首先,我们可以在钩子当中使用meta定义一些标题
其次,利用导航守卫修改标题
更多使用方法请去官网学习 --> https://router.vuejs.org/zh/guide/advanced/navigation-guards.html
其他vue-router文章
vue-router的安装和配置方式
将router修改为HTML5的history模式 & router-link的其他属性
vue的动态路由
vue的路由懒加载
vue路由的嵌套
vue-router参数传递
vue-router导航守卫
vue-router的keep-alive
1796
条评论 我要发表评论