1.背景

 日常开发中,有时候有些组件是功能类似甚至完全相同的情况,这个时候我们完全没必要再重新写一个,
可以抽离复用可以减少大量的时间,案例:

 像一些App底部的标签页,在进行一些标签的跳转时,底部的只是变化选中时的字体颜色和图标,
大部分的元素都相同。

2.抽离思路

2.1先抽出一个大的可以装里面小组件的大容器TabBar
<div class='tabBar'><tab-bar-item v-for="(val,index) in navBar" :path='val.path' fontColor='#009E97'><template v-slot:icon-active><img :src="val.activeImg"></template><template v-slot:icon-inactive><img :src="val.inactiveImg"></template><template v-slot:text>{{val.name}}</template></tab-bar-item></div>
2.2实现里面各个小组件,这里要用具名插槽
<div class='tabBarItem' @click="itemHandle"><div v-if="iconActive"><slot name="icon-active"></slot></div><div v-else="!iconActive"><slot name="icon-inactive"></slot></div><div :style="changeColor" class="text"><slot name="text"></slot></div></div>
 因为底部的标签页跳转是要更换图标,因此可以用v-if,v-else来控制显示。
2.3要使得这类组件具有通用性和复用性,有些数据是不能写死的。
                             tabBarItem.vue
props: {path: String,fontColor: {type: String,default: "#A3A3A3",},},
 我们可以在tabBar通过传递path,fontColor来改变里面子组件相关的属性,更多的属性可以
视情况而定
2.4根据路由跳转来对比父组件传进来的路径,可以得出哪个标签点击。
 computed: {//根据路由判断图标的激活状态iconActive() {return this.$route.path === this.path;},changeColor() {//标签页点击了则进行 判断,改变对应点击的字体颜色if (this.$route.path === this.path) {return { color: "#009E97" };} else {return { color: "#A3A3A3" };}},},methods: {itemHandle() {this.$router.push(this.path);},},

3.优点

1.节省时间,减少代码
2,组件利用率高,适用性广
3.减少代码的堆积,代码模块化,便于维护和修改

Vue组件的抽离和封装相关推荐

  1. vue 封装组件供全局使用_vue 封装组件的基本操作

    /**1.封装组件 局部 封装**/ // 1.创建组件构造器对象 const cpnC = Vue.extend({ template: ` <div> </div>` }) ...

  2. vue2.0 如何自定义组件(vue组件的封装)

    一.前言 之前的博客聊过 vue2.0和react的技术选型:聊过vue的axios封装和vuex使用.今天简单聊聊 vue 组件的封装. vue 的ui框架现在是很多的,但是鉴于移动设备的复杂性,兼 ...

  3. vue 生成发布包_年轻人如何从0到1封装发布一个vue组件__Vue.js

    封装发布组件是前端开发中非常重要的能力,通过对常用组件的封装可以提升团队开发的效率,避免重复劳作且不方便维护.好的组件的抽象和封装能让组件得到更广泛和多环境兼容的应用. 本文讲述了如何一步步从0到1封 ...

  4. Vue实现跑马灯效果以及封装为组件发布

    Vue 实现跑马灯效果 前言 最近做活动需要做跑马灯效果,其他同事也有实现,本来打算复制他们代码,发现都是使用setInterval实现了,也没有封装为组件,所以自己用CSS3实现了一下跑马灯效果,并 ...

  5. Vue组件自调用/无限递归导航/element-ui导航封装

    Vue组件自调用概念 Vue组件中必须使用name属性才可以自己调用自己 <template><div>内容<my-nav/></div> </t ...

  6. Vue 组件封装之 ScrollView 上拉加载更多

    Vue 组件封装之 ScrollView 上拉加载更多 一.ScrollView 上拉加载更多 二.使用案例 三.API 使用指南 四.源代码 一.ScrollView 上拉加载更多 组件说明: 实现 ...

  7. vue组件封装: vue-popper+FloatManager

    文章目录 前言 效果展示 正文 FloatManager vue-Popper attributes slots events 对vue-popper进一步封装 html js css 过渡 写在最后 ...

  8. Vue 组件封装之 Questionnaire 问卷调查

    Vue 组件封装之 Questionnaire 问卷调查 前言 一.Questionnaire 组件 二.使用案例 三.API 使用指南 四.源代码 前言 问卷调查表也是目前前端比较常见的开发项目,目 ...

  9. 封装Vue组件的原则及技巧

    封装Vue组件的原则及技巧 Vue的组件系统 Vue组件的API主要包含三部分:prop.event.slot props表示组件接收的参数,最好用对象的写法,这样可以针对每个属性设置类型.默认值或自 ...

  10. Vue 组件封装之 Content 列表(处理多行输入框 textarea)

    Vue 组件封装之 Content 列表 一.Content 列表 二.使用案例 三.API 使用指南 四.源代码 一.Content 列表 组件说明: 实现 Content 列表布局排版. 效果展示 ...

最新文章

  1. php 返回字符串给aja,解决ajax异步请求返回的是字符串问题
  2. C# .net中cookie值为中文时的乱码解决方法
  3. ip.php是什么意思,IP是什么意思
  4. leetcode算法题--地图中的最高点
  5. 电大工商管理计算机考试,东方电大工商管理专科计算机期末复习EXCEL五题.docx...
  6. java学习(142):file类的基本创建
  7. python正则判断_Python 正则表达式
  8. git本地安装配置与基础概念
  9. Flutter进阶—Firebase数据库实例
  10. 马尔科夫决策过程(MDP) : BlackJack问题(MC-ES)
  11. php短信接口怎么用,php短信接口接入详细过程
  12. mac可装云服务器_Mac 下阿里云服务器的配置方法
  13. java e_java中E表示什么意思
  14. rpmbuild SPEC文件的语法
  15. swak4foam的安装(v7测试有效)
  16. 智能合约自动检测工具『链必验』,如何带你解锁Web3.0世界
  17. 用户浏览页面时,token过期怎么处理?
  18. 电网视频监控系统国网B接口中注册的接口流程GB281181国标流媒体服务平台
  19. 基于SSM物业管理系统
  20. mybatis association select 性能分析

热门文章

  1. 计算机就业去哪个岗位好? 算法岗位还是开发岗位更好?
  2. oracle spatial 更新,oracle Spatial(空间数据库)概述
  3. <!DOCTYPE>解读
  4. KOOM原理讲解(上)-JAVA内存分析
  5. 图神经网络(GNN)资源帖视频及必读论文
  6. Flutter Package 开发、发布、使用
  7. Jcrop+ajaxFileUpload 图片裁切上传 oss(java web)
  8. 中文版IE7for XP SP2下载地址
  9. 点云统一法线方向(未知视点)
  10. 编辑中的word变成只读_word只读模式怎么改 word保存文件提示此文件为只读无法保存修改方法...