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 相关文章推荐
js选取多个或单个元素的实现代码(用class)
Aug 22 Javascript
求数组最大最小值方法适用于任何数组
Aug 16 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
May 28 Javascript
javascript消除window.close()的提示窗口
May 20 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
js实现选中复选框文字变色的方法
Aug 14 Javascript
js css自定义分页效果
Feb 24 Javascript
使用BootStrap实现标签切换原理解析
Mar 14 Javascript
老生常谈js数据类型
Aug 03 Javascript
Node.js 多进程处理CPU密集任务的实现
May 26 Javascript
Vue实现购物车详情页面的方法
Aug 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
图形数字验证代码
2006/10/09 PHP
一个php作的文本留言本的例子(三)
2006/10/09 PHP
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
2017/07/04 jQuery
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
Python实现去除代码前行号的方法
2015/03/10 Python
Python监控主机是否存活并以邮件报警
2015/09/22 Python
Python常用知识点汇总
2016/05/08 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
django静态文件加载的方法
2018/05/20 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
Django choices下拉列表绑定实例
2020/03/13 Python
师范生的个人求职信范文
2014/01/04 职场文书
中层干部培训方案
2014/06/16 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
典型事迹材料范文
2014/12/29 职场文书
保险内勤岗位职责
2015/04/13 职场文书
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android