当前位置: 首页 > news >正文

Vue3 动态组件

component

在模板中使用 元素,通过 is 特性来动态切换组件:

<template><div><el-tabs type="card" v-model="activeName" @tab-click="handleClick"><el-tab-pane label="待审核" name="1" /><el-tab-pane label="已通过" name="2" /><el-tab-pane label="未通过" name="3" /><el-tab-pane label="黑名单" name="4" /></el-tabs><componentref="componentRef":is="componentName":activeName="activeName"></component></div>
</template>
<script setup>
import { ref, toRefs, computed, markRaw, nextTick } from "vue";
// 待提交
import PendingReview from "./pendingReview.vue";
// 已通过
import Passed from "./passed.vue";
// 未通过
import NotPass from "./notPass.vue";
// 黑名单
import Blacklist from "./blacklist.vue";const componentRef = ref();const activeName = ref("1");
const componentName = ref(markRaw(PendingReview));const handleClick = (tab) => {if (tab.paneName === "1") {componentName.value = markRaw(PendingReview);} else if (tab.paneName === "2") {componentName.value = markRaw(Passed);} else if (tab.paneName === "3") {componentName.value = markRaw(NotPass);} else {componentName.value = markRaw(Blacklist);}
};
</script>
<style></style>

使用 v-if 或 v-show

<template><div><el-tabs type="card" v-model="activeName"><el-tab-pane label="待审核" name="1" /><el-tab-pane label="已通过" name="2" /><el-tab-pane label="未通过" name="3" /><el-tab-pane label="黑名单" name="4" /></el-tabs><PendingReview v-if="activeName == '1'"/><Passed v-if="activeName == '2'"/><NotPass v-if="activeName == '3'"/><Blacklist v-if="activeName == '4'"/></div>
</template>
<script setup>
import { ref, toRefs, computed, markRaw, nextTick } from "vue";
// 待提交
import PendingReview from "./pendingReview.vue";
// 已通过
import Passed from "./passed.vue";
// 未通过
import NotPass from "./notPass.vue";
// 黑名单
import Blacklist from "./blacklist.vue";const componentRef = ref();const props = defineProps({callData: {},
});
const activeName = ref("1");</script>
<style></style>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 常见的站长工具接口有哪些?站长们该如何选择?
  • Echarts中文版 2D世界地图
  • Leetcode 寻找重复数
  • Vue3: setup语法糖
  • B2C电商接口解决方案||搭建电商项目必备电商接口
  • Redis中的AOF重写过程及其实际应用
  • Linux echo,printf 命令
  • 工业一体机选型如何考虑硬件和软件兼容性
  • Spring Cloud全解析:熔断之Hystrix线程隔离导致的问题
  • web群集--nginx配置文件location匹配符的优先级顺序详解及验证
  • 防蓝光护眼灯有用吗?五款防蓝光效果好的护眼台灯推荐
  • 《JavaEE进阶》----11.<SpringIOCDI【Spring容器+IOC详解+DI介绍】>
  • ArcGIS Pro SDK (十三)地图创作 4 设备
  • 基于鸿蒙API10的RTSP播放器(八:音量和亮度调节功能的整合)
  • LeetCode --- 414周赛
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 分享的文章《人生如棋》
  • chrome扩展demo1-小时钟
  • ComponentOne 2017 V2版本正式发布
  •  D - 粉碎叛乱F - 其他起义
  • Docker容器管理
  • ESLint简单操作
  • JavaScript学习总结——原型
  • k8s 面向应用开发者的基础命令
  • Laravel 中的一个后期静态绑定
  • Python_网络编程
  • React-生命周期杂记
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 思维导图—你不知道的JavaScript中卷
  • 智能网联汽车信息安全
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • ## 1.3.Git命令
  • #include到底该写在哪
  • #stm32整理(一)flash读写
  • (1)(1.9) MSP (version 4.2)
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (算法)大数的进制转换
  • (原)本想说脏话,奈何已放下
  • (转)ORM
  • .NET Core 2.1路线图
  • .NET Core Web APi类库如何内嵌运行?
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET构架之我见
  • @vueup/vue-quill使用quill-better-table报moduleClass is not a constructor
  • [20171102]视图v$session中process字段含义