Vue3 动态切换组件component
在 vue3 开发中 经常会遇有 动态切换组件 的需求,下面简单写个例子,当然也还有其它方法。
用 component :is= 来变换组件
<div class="IndConK Huans overH" > <!-- 正常组件 <ext-tel-status-component ></ext-tel-status-component> --> <!-- 动态组件 --> <component :is="currentTemplate"></component> </div>
component :is="currentTemplate" 其中 currentTemplate 是当前组件的名称
组件文件的位置
引入组件 部分
<script> /* 引入 组件 */ import ExtTelListComponent from '@/components/ExtTelListComponent.vue' /* 引入 组件 */ import ExtTelStatusComponent from '@/components/ExtTelStatusComponent.vue' export default { name: 'MainIndex', components: { ExtTelListComponent, ExtTelStatusComponent, }, data() { return { currentTemplate: "ExtTelStatusComponent" //当前组件 }; }, mounted() { //页面加载完成后 调用一次 显示默认组件 this.toggleTemplate('ExtTelStatusComponent'); }, methods: { //切换 组件 toggleTemplate(activeTemplate) { console.log("toggleTemplate() "+activeTemplate); this.currentTemplate = activeTemplate; }, }
通过 toggleTemplate 这个函数 将组件名称 传入 赋给 变量 currentTemplate 从而改变组件
调用方式
<div class="menuUn Huans"> <a href="javascript:;" class="menuUna flexC fl-bet Huans" @click="toggleTemplate('ExtTelStatusComponent')"><p>显示组件A</p><span>[0/5]</span></a> <a href="javascript:;" class="menuUna flexC fl-bet Huans" @click="toggleTemplate('ExtTelListComponent')"><p>显示组件B</p><span>[0/5]</span></a> </div>