vue3动态组件的展示

简介: 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>



1425695-20220508170841384-124943822.gif


总结


主要使用的是: <component :is="showCom.com"></component>


中is属性;这个属性对应的是组件的名称。


markRaw表示这个组件不需要响应式

相关文章
|
2天前
|
JavaScript 定位技术 API
在 vue3 中使用高德地图
在 vue3 中使用高德地图
8 0
|
3天前
vue3 键盘事件 回车发送消息,ctrl+回车 内容换行
const textarea = textInput.value.textarea; //获取输入框元素
13 3
|
5天前
|
JavaScript 前端开发 CDN
vue3速览
vue3速览
18 0
|
5天前
|
设计模式 JavaScript 前端开发
Vue3报错Property “xxx“ was accessed during render but is not defined on instance
Vue3报错Property “xxx“ was accessed during render but is not defined on instance
|
5天前
|
JavaScript 前端开发 安全
Vue3官方文档速通(下)
Vue3官方文档速通(下)
16 0
|
5天前
|
JavaScript API
Vue3 官方文档速通(中)
Vue3 官方文档速通(中)
22 0
|
5天前
|
缓存 JavaScript 前端开发
Vue3 官方文档速通(上)
Vue3 官方文档速通(上)
32 0
|
6天前
Vue3+Vite+Pinia+Naive后台管理系统搭建之五:Pinia 状态管理
Vue3+Vite+Pinia+Naive后台管理系统搭建之五:Pinia 状态管理
10 1
|
6天前
Vue3+Vite+Pinia+Naive后台管理系统搭建之三:vue-router 的安装和使用
Vue3+Vite+Pinia+Naive后台管理系统搭建之三:vue-router 的安装和使用
13 0
|
6天前
Vue3+Vite+Pinia+Naive后台管理系统搭建之二:scss 的安装和使用
Vue3+Vite+Pinia+Naive后台管理系统搭建之二:scss 的安装和使用
11 0