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对select标签的控制(option选项/select)
Jan 31 Javascript
js日期相关函数总结分享
Oct 15 Javascript
form.submit()不能提交表单的原因分析
Oct 23 Javascript
JavaScript中的变量作用域介绍
Dec 31 Javascript
JS实现状态栏跑马灯文字效果代码
Oct 24 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
Jul 05 Javascript
基于构造函数的五种继承方法小结
Jul 27 Javascript
微信小程序开发之tabbar图标和颜色的实现
Oct 17 Javascript
Vue.js中对css的操作(修改)具体方式详解
Oct 30 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 Javascript
js 解析 JSON 数据简单示例
Apr 21 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
php绘制一条弧线的方法
2015/01/24 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
React组件生命周期详解
2017/07/03 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
Python读取网页内容的方法
2015/07/30 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
安全教育演讲稿
2014/05/09 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
校长新学期寄语2016
2015/12/04 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
pycharm无法安装cv2模块问题
2022/05/20 Python
VUE递归树形实现多级列表
2022/07/15 Vue.js