vue router 通过路由来实现切换头部标题功能


Posted in Javascript onApril 24, 2019

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

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

beforeRouterEnter:第一次进入时调用。

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

效果图如下:

vue router 通过路由来实现切换头部标题功能

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

 路由元信息(meta)配置

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

const router = new Router({
  mode: 'history',
  base: process.env.BASE_URL,
  routes: [
    {
      path: "help",
      name: "help",
      meta: {
        title: "新手帮助"
      },
      component: () => import('./views/Help.vue')
    },
    {
      path: "page",
      name: "page",
      meta: {
        title: "宝贝信息"
      },
      component: () => import('./views/Page.vue')
    }
  ]
})

路由布局页面

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

<template>
  <div id="app">
    <header class="header">
      <button @click="back" class="t-xiaoxi iconfont" v-html="icon"></button>
      <h1 class="t-title">{{title}}</h1>
      <router-link to="/search" class="t-sousuo iconfont"></router-link>
    </header>
    <div class="main">
      <router-view></router-view>
    </div>
    <footer class="footer">


// ...
    </footer>
  </div>
</template>

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

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

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

<script>
  export default {
    name: "app",
    data() {
      return {
        title: "我的网站",
        url: '/',
        icon: ''
      }
    },
    methods: {
      back() {
        this.$router.go(this.url);
      },
      update(route) {
        [this.title, this.url, this.icon] = ["我的网站", '/', ''];
        if (!['', '/'].includes(route.path)) { // 判断是否根页面,用于切换标题与返回上一页或回到主页
          [this.title, this.url, this.icon] = [route.meta.title || "", '-1', ''];
        }
      }
    },
    beforeRouteEnter(to, from, next) {
      next(vm => { //回调函数,此时this指针不可用,可采用回调函数访问。
        vm.update(to);
      })
    },
    beforeRouteUpdate(to, from, next) {
      this.update(to);
      next();
    }
  };
</script>

总结

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

Javascript 相关文章推荐
javascript 动态加载 css 方法总结
Jul 11 Javascript
javascript下利用arguments实现string.format函数
Aug 24 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
Jun 20 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
全面解析Bootstrap弹窗的实现方法
Dec 01 Javascript
JavaScript中Function函数与Object对象的关系
Dec 17 Javascript
图解js图片轮播效果
Dec 20 Javascript
jQuery实现简单滚动动画效果
Apr 07 Javascript
基于EasyUI的基础之上实现树形功能菜单
Jun 28 Javascript
Angular2关于@angular/cli默认端口号配置的问题
Jul 15 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
Jun 24 Javascript
JavaScript剩余操作符Rest Operator详解
Jul 20 Javascript
js实现全选反选不选功能代码详解
Apr 24 #Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
Apr 24 #Javascript
Vue源码解析之数据响应系统的使用
Apr 24 #Javascript
详解微信小程序文件下载--视频和图片
Apr 24 #Javascript
详解微信小程序之一键复制到剪切板
Apr 24 #Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
Apr 24 #Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
Apr 24 #Javascript
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
php 检查电子邮件函数(自写)
2014/01/16 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
JS面向对象编程 for Cookie
2010/09/19 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
Bootstrap基础学习
2015/06/16 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
Vue中computed及watch区别实例解析
2020/08/01 Javascript
Python的高级Git库 Gittle
2014/09/22 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
大学三年的自我评价
2013/12/25 职场文书
优秀毕业生自荐信范文
2014/01/01 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
科技工作者先进事迹
2014/08/16 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
签字仪式主持词
2015/07/03 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
Django使用redis配置缓存的方法
2021/06/01 Redis