vue3+ts动态组件

611 阅读1分钟

vue的动态组件,之前想开发tabbar切换功能,可以使用路由或者是v-if,实现起来有点麻烦,vue的动态组件不得不说是很好用,简单的使用,这里使用is判断即可


<template>
  <div class="container">
    <span :class="comId==item.com?'active':''" v-for="item in data" @click="changeCom(item.com)">{{ item.name }}</span>
  </div>
  <component :is="comId"></component>
</template>
<script setup lang="ts">
import { reactive,ref } from 'vue';
import AVue from './views/snyc/a.vue'
import BVue from './views/snyc/b.vue'
import CVue from './views/snyc/c.vue'

const comId =ref(AVue)
const data = reactive([{
  name: 'A组件',
  com: AVue
}, {
  name: 'B组件',
  com: BVue
}, {
  name: 'C组件',
  com: CVue
}
])
const changeCom =(item:any)=>{
  comId.value =item
}
</script>

<style lang="scss" scoped>
.container {
  display: flex;
  span{
    margin-right: 10px;
    padding: 10px;
  }
}
.active{
  background-color: aquamarine;
}
</style>

实现的效果

image.png