Vue的Tab组件小练习

    今天在学习Vue文档的时候,看到了动态组件中的is特性。

官方文档用它实现了一个小demo。于是我抱着试一试的心态也写了一个比较简易的。

用的是模块化组件机制来实现的,目录文件为

HelloWorld:

<template>
    <div class="tab">
        <button @click="tabView('left')">我是left</button>
        <button @click="tabView('middle')">我是middle</button>
        <button @click="tabView('right')">我是right</button>

        //展示要显示的组件
        <component :is="currentView"></component>
    </div>
</template>

<script>
import Left from './left'
import Middle from './middle'
import Right from '.right'
//引入组件

export default {
    name:'HelloWorld',
    data(){
        return{
            currentView:'left'
        }
    },
    components:{
        Left,
        Middle,
        Right
    },
    methods:{
        tabView(component){
            this.currentView = component
        }
        
    }

}
</script>

left、middle、right 组件内的内容一致,html部分写个根元素div,div包裹要展示信息

这样,一个tab切换就完成了。

在此之前用过v-show写过一次切换,大致是这样的

<ul>
    <li v-for="(item,index) in items" :key="index" :class=' flag === index ? "blue": " " ' @click="tab(index)">{{ item.nav}}</li>
</ul>

<div class="view" v-for="(list,index) in lists" :key="index" v-show="index === flag">
    {{ list.test }}
</div>


<script>
    data:{
        flag:0,
        items:[
            { nav:'left' },
            { nav:'middle' },
            { nav:'right' }
        ],
        list:[
             {  test:'left' },
             {  test:'middle' },
             {  test:'right' }
        ]
    },
    methods:{
        tab(index){
            this.flag = index      
        }
    
    }


</script>

就是通过中间一个变量来判断对应的下标数字是否相等,相等的话就显示。

在个人看来 is属性就类似于:class,根据绑定的值来渲染将要显示的组件。

如有不当之处,还望看到的大佬给予批评。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值