经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
vue router 通过路由来实现切换头部标题功能
来源:jb51  时间:2019/4/24 12:28:52  对本文有异议

在做单页面应用程序时,一般页面布局头尾两块都是固定在布局页面,中间为是路由入口。这时访问页面时头部标题不会变,该问题的解决方案如下:

通过采用组件内路由卫士(beforeRouterEnter、beforeRouterUpdate)与路由元信息(meta) 来实现更新头部标题信息。点击查看文档

beforeRouterEnter:第一次进入时调用。

beforeRouterUpdate:重复使用当前组件时调用。

效果图如下:

注意看页面标题与图标变换

 路由元信息(meta)配置

在路由元信息中配置页面标题,通过组件内路由卫士获取

  1. const router = new Router({
  2. mode: 'history',
  3. base: process.env.BASE_URL,
  4. routes: [
  5. {
  6. path: "help",
  7. name: "help",
  8. meta: {
  9. title: "新手帮助"
  10. },
  11. component: () => import('./views/Help.vue')
  12. },
  13. {
  14. path: "page",
  15. name: "page",
  16. meta: {
  17. title: "宝贝信息"
  18. },
  19. component: () => import('./views/Page.vue')
  20. }
  21. ]
  22. })

路由布局页面

 header 与 footer 是固定头尾, main为路由入口。 title为页面标题

  1. <template>
  2. <div id="app">
  3. <header class="header">
  4. <button @click="back" class="t-xiaoxi iconfont" v-html="icon"></button>
  5. <h1 class="t-title">{{title}}</h1>
  6. <router-link to="/search" class="t-sousuo iconfont"></router-link>
  7. </header>
  8. <div class="main">
  9. <router-view></router-view>
  10. </div>
  11. <footer class="footer">
  12.       // ...
  13. </footer>
  14. </div>
  15. </template>

在beforeRouteEnter、beforeRouteUpdate函数中获取路由元信息,并更新页面标题。

beforeRouteEnter:当第一次进入时,会被标题进行一次初始化操作

beforeRouteUpdate:当组件被重复调用时,执行更新操作。

  1. <script>
  2. export default {
  3. name: "app",
  4. data() {
  5. return {
  6. title: "我的网站",
  7. url: '/',
  8. icon: ''
  9. }
  10. },
  11. methods: {
  12. back() {
  13. this.$router.go(this.url);
  14. },
  15. update(route) {
  16. [this.title, this.url, this.icon] = ["我的网站", '/', ''];
  17. if (!['', '/'].includes(route.path)) { // 判断是否根页面,用于切换标题与返回上一页或回到主页
  18. [this.title, this.url, this.icon] = [route.meta.title || "", '-1', ''];
  19. }
  20. }
  21. },
  22. beforeRouteEnter(to, from, next) {
  23. next(vm => { //回调函数,此时this指针不可用,可采用回调函数访问。
  24. vm.update(to);
  25. })
  26. },
  27. beforeRouteUpdate(to, from, next) {
  28. this.update(to);
  29. next();
  30. }
  31. };
  32. </script>

总结

以上所述是小编给大家介绍的vue router 通过路由来实现切换头部标题功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对w3xue网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号