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 面向对象(创建对象)
Mar 30 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
Jun 29 Javascript
jQuery Animation实现CSS3动画示例介绍
Aug 14 Javascript
JavaScript通过join函数连接数组里所有元素的方法
Mar 20 Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 Javascript
js 获取范围内的随机数实例代码
Aug 02 Javascript
Vue中计算属性computed的示例解读
Jul 26 Javascript
微信通过页面(H5)直接打开本地app的解决方法
Sep 09 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
Dec 22 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 Javascript
echarts实现晶体球面投影的实例教程
Oct 10 Javascript
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
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
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
ThinkPHP模型详解
2015/07/27 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
python 获取文件列表(或是目录例表)
2009/03/25 Python
跟老齐学Python之做一个小游戏
2014/09/28 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
银行贷款委托书范本
2014/10/11 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
优秀教研组申报材料
2014/12/26 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
大学生受助感言
2015/08/01 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
vue使用echarts实现折线图
2022/03/21 Vue.js