vue动态组件

本文介绍了Vue.js中如何使用动态组件来展示不同内容。动态组件通过`is`属性结合`component`标签实现,允许在同一个位置切换不同的组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态组件

  • 有时候我们希望在一个地方展示不同的组件信息内容,我们就可以使用动态组件。

  • 实现

    <component is="组件名"></component>
    

    is属性的值是组件名, component标签用来渲染这个组件替代自己的位置

  • 代码

    <template>
      <div class="tab">
          <div class="tit">
              <span :class="curComName=='Son1' ?'on':''" @click="change(1)">商品介绍</span>
              <span :class="curComName=='Son2' ?'on':''" @click="change(2)">规格与包装</span>
              <span :class="curComName=='Son3' ?'on':''" @click="change(3)">售后包装</span>
              <span :class="curComName=='Son4' ?'on':''" @click="change(4)">商品评价</span>
          </div>
          <div class="content">
              <!-- <template v-if="curIndex==1"><Son1/></template>
              <template v-if="curIndex==2"><Son2/></template>
              <template v-if="curIndex==3"><Son3/></template>
              <template v-if="curIndex==4"><Son4/></template> -->
              <!-- component标签 叫做动态组件标签: is属性指定一个组件的名称,component就显示这个组件的内容 -->
              
                <component :is="curComName"></component>
          </div>
      </div>
    </template>
    
    <script>
    import Son1 from "./Son1"
    import Son2 from "./Son2"
    import Son3 from "./Son3"
    import Son4 from "./Son4"
    export default {
        data(){
            return{
                // curIndex:1
                curComName:"Son1"
            }
        },
        methods:{
            // tab(idx){
            //     this.curIndex = idx;
            // }
            change(name){
                console.log(name)
                this.curComName = "Son"+name
            }
        },
        components:{
            Son1,Son2,Son3,Son4
        }
    }
    
    </script>
    <style scoped>
    .tab{
        background-color: #eee;
        width: 500px;
    }
    .tab .tit {
        padding:10px;
    }
    .tab .content{
        padding: 40px;
       border:2px solid blue;
    }
    .tab .tit span{
        display: inline-block;
        background-color: blue;
        color:#fff;
    }
    .tab .tit span.on{
        background-color: red;
    }
    </style>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值