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 相关文章推荐
asp 取文本框名称代码
Dec 02 Javascript
理解JavaScript的prototype属性
Feb 11 Javascript
jQuery之选项卡的简单实现
Feb 28 Javascript
jQuery的cookie插件实现保存用户登陆信息
Apr 15 Javascript
node.js中的console.time方法使用说明
Dec 09 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
Sep 26 Javascript
vue,angular,avalon这三种MVVM框架优缺点
Apr 27 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 13 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
Aug 25 Javascript
vue项目中播放rtmp视频文件流的方法
Sep 17 Javascript
javascript代码实现简易计算器
Jan 25 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
php escape URL编码
2008/12/10 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
Python list操作用法总结
2015/11/10 Python
Python中类型检查的详细介绍
2017/02/13 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
python爬虫实例详解
2018/06/19 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
个人查摆剖析材料
2014/02/04 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
护士医德医风自我评价
2014/09/15 职场文书
小学班级口号大全
2015/12/25 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android