问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vue 怎样封装方法在

发布网友 发布时间:2022-04-29 21:23

我来回答

2个回答

懂视网 时间:2022-05-14 21:38

Vue怎么封装组件?Vue封装组件的具体实现是怎样的?在这里我就给大家分享一下vue中tab切换组件如何封装,下面我们就来看看具体的代码实现。

需求

  1. 简易版
    tab对应的选项卡只是普通文本,多用于展示性组件。

  2. 复杂版
    tab对应的选项卡包括表格,按钮,图标,表单等多种元素,包括数据交互、与父组件的通信等。

  3. 性能优化
    切换tab时,缓存组件。

方案

  • Prop
    父组件向子组件传递参数。
    tabList(tabs标题列表)、tabIndex(当前的tab序号)

  • 自定义事件
    切换tab事件

  • slot
    内容分发

  • 动态组件
    keep-alive:如果把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染

  • 复杂化

    如果是第一种需求,可以不必自己写组件,UI框架中现有的功能完全可以满足需求。

    如果是第二种需求,一般没有完全合适的UI组件,而本例是我个人的一种解决方案。

  • 封装tabs公共部分

  • tab对应的内容区域使用slot内容分发

  • ajax请求数据等操作是在分发内容组件中执行的。

  • 钩子函数activated
    通过activated监听组件是否激活。

  • 具体实现

    template

     <p class="my-tabs">
     <p class="tabs-bar">
     <p class="tabs-bar-nav">
     <p class="tabs-tab" v-for="tab in tabList"
     :class="[tabIndex == tab.index ? 'tabs-active' : '']"
     @click="changeTab(tab)">
      {{tab.name}}
     </p>
     </p>
     </p>
     <p class="tabs-content">
     <slot></slot>
     </p>
     </p>

    script

     export default {
     name: 'MyTabs',
     props:
     {
     tabList: Array,
     tabIndex: Number
     },
     data () {
     return {
     }
     },
     methods: {
     changeTab: function (tab) {
     this.$emit('changeTab', tab)
     }
     }
    }

    style

     <style scoped lang="scss">
    .my-tabs {
     font-size: 14px;
     color: #444;
    }
     .tabs-bar {
     border-bottom: 1px solid #eee;
     position: relative;
     padding: 5px 0;
     }
     .tabs-bar-nav {
     display: table;
     margin-left: 35px;
     position: absolute;
     bottom: -1px;
     }
     .tabs-tab {
     min-width: 110px;
     padding: 5px 0;
     position: relative;
     display: inline-block;
     text-align: center;
     cursor: pointer;
     }
     .tabs-active {
     border-top: 1px solid pink;
     border-left: 1px solid pink;
     border-right: 1px solid pink;
     border-bottom: 1px solid #fff;
     }
     .tabs-content {
     padding-left: 20px;
     padding-right: 20px;
     padding-bottom: 30px;
     }
    </style>

    引用

    以下one,two内部只是一个p。

     <!-- Tabs -->
     <my-tabs :tabList="tabList" :tabIndex="tabIndex" @changeTab="changeTab">
     <keep-alive>
     <component :is="currentContent">
     </component>
     </keep-alive>
     </my-tabs>
    import MyTabs from '../componets/tabs.vue'
    import One from './one.vue'
    import Two from './two.vue'
    
    export default {
     name: 'Home',
     components: {
     MyTabs,
     'one': One,
     'two': Two
     },
     data () {
     return {
     tabIndex: 0,
     currentContent: 'one',
     tabList: [
     {
      index: 0,
      name: '选项一',
      component: 'one'
     },
     {
      index: 1,
      name: '选项二',
      component: 'two'
     }
     ]
     }
     },
     methods: {
     // 切换选项卡
     changeTab: function (tab) {
     this.tabIndex = tab.index
     this.currentContent = tab.component
     }
     }
    }

    demo

    tabs.png

    相关推荐:

    Jquery封装tab自动切换效果的具体实现_jquery

    Tab切换组件(选项卡功能)实例代码_jquery

    热心网友 时间:2022-05-14 18:46

    方法有不少,可以直接框架内接入;

    也可以使用第三方的SDK直接使用;

    和原生集成也可以混合开发集合;

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 vue怎么实现封装方法 鲁迅有哪些散文集和散诗集 王者荣耀的最高英雄评分为16分,你的超神英雄又能拿到多少分? 王者荣耀怎么提高英雄评分 王者荣耀评分到底怎么个评法,我是那个Lee,为什么我是2分,虚心求解... 王者荣耀英雄评分 王者荣耀评分低原因 鲁迅的散文集和小说集 王者荣耀的最高评分是多少 新浪微博别人转发了我的评论,我删了,别人那里还会有吗 王者荣耀英雄分评分怎么计算 新浪微博被封号解封后给别人微博的评论还在吗? 王者荣耀英雄综合得分? 新浪微博用户名换掉了是不是评论也没有了 王者荣耀的评分机制是怎样的 王者荣耀综合评分多少算强 王者荣耀英雄评分怎么算 高速公路上的摄像头是如何对超速行驶的汽车拍照的? 给《王者荣耀》英雄的平衡性评分,你认为可以打几分? 高速公路摄像头是怎么给超速的车拍照的? ...on方法用来调用,emit方法用来调用,参数和vue的$on $emit一样_百度... vue 有OpenTextFile方法吗? 接入飞洛印API如何进行封装 用手机号算出你的年龄,这是什么原理 用2022年用手机号算年龄 用手机号算出你的年龄,这是什么原理? 从你的手机号码就可以透露你的年龄原理是什么? 为什么能通过手机号最后一位算出年龄 vintage sex是什么意思 手机号怎么筛选年龄段的人员 为什么我同事的男朋友仅仅用一个手机号码就知道对方姓名户籍年龄? Vintage; Reprint什么意思 tcl电视电源灯亮黑屏 TCL电视机开不了机,电源指示灯闪烁,按什么都没有反应是怎么回事 TCL开机,电源灯有闪烁,屏幕黑屏,什么问题? TCL液晶电视显示灯闪烁屏幕黑屏普遍是哪个板子坏 TCL液晶电视按遥控器开机电源指示灯一直闪烁,开机一直黑屏怎么解决? TCL电视电源指示灯亮,但屏幕没有反应,是怎么回事? 海尔冰箱立梁难卡进去。 双开门冰箱门中间立柱合不上- 问一问