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模仿msgbox提示效果代码
Jun 10 Javascript
自制基于jQuery的智能提示插件一枚
Feb 18 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
Jul 22 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
Nov 06 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
Nov 21 Javascript
javascript的回调函数应用示例
Feb 20 Javascript
requireJS使用指南
Apr 27 Javascript
jQuery添加和删除输入文本框标签代码
May 20 Javascript
动态JavaScript所造成一些你不知道的危害
Sep 25 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
Jul 26 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
Aug 10 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
May 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
PHP新手上路(五)
2006/10/09 PHP
用PHP的ob_start();控制您的浏览器cache!
2006/11/25 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
Python调用命令行进度条的方法
2015/05/05 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
python代码中怎么换行
2020/06/17 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
numpy实现RNN原理实现
2021/03/02 Python
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
Java的类与C++的类有什么不同
2014/01/18 面试题
生产内勤岗位职责
2013/12/07 职场文书
车祸赔偿收入证明
2014/01/09 职场文书
人资专员岗位职责
2014/04/04 职场文书
大学新生军训方案
2014/05/03 职场文书
好听的队名和口号
2014/06/09 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
党员个人总结范文
2015/02/14 职场文书
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL