vue3动态组件的展示

需求描述

有些时候,我们需要做这样的处理。
点击A按钮的时候,出现组件A
点击B按钮的时候,出现组件B
点击C按钮的时候,出现组件C
这个时候,我们就可以使用动态组件了

动态组件

<template>
  <div>
      <el-button @click="hander(item.com)"
        v-for="item in showCom.list" :key="item.com">
        {{ item.name}}
      </el-button>
     <component :is="showCom.com"></component>
  </div>
</template>
<script setup lang="ts">
import { reactive, ref,markRaw } from "@vue/reactivity"
import TestA from "../components/TestA.vue"
import TestB from "../components/TestB.vue"
import TestC from "../components/TestC.vue"
let showCom=reactive({
  com:TestA,
  list:[
    // markRaw [ma k rou]
    { name:'展示A组件',com: markRaw(TestA)  },
    { name:'展示B组件',com: markRaw(TestB) },
    { name:'展示C组件',com: markRaw(TestC) }
  ]
})
const hander=(comName:any)=>{
  showCom.com=comName
}
</script>

总结

主要使用的是: <component :is="showCom.com"></component>
中is属性;这个属性对应的是组件的名称。
markRaw表示这个组件不需要响应式
posted @   南风晚来晚相识  阅读(690)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2020-05-08 el-dialog组件无法跟新视图上的数据
点击右上角即可分享
微信分享提示