vue高级组件封装 element组件二次封装

news/2025/2/1 12:28:28/

vue高级组件封装 element组件二次封装

相关解读

  1. 使用defineOptions定义组件名称
  2. 使用useSlots获取插槽 获取父组件传递过来的dialog组件的插槽 通过循环直接通过动态插槽插入el-dialog组件中
  3. 使用defineExpose暴露组件方法 父组件可通过ref直接调用
  4. 使用v-bind="$attrs"绑定父组件传递的属性
  5. 使用v-bind="slotProps"绑定插槽属性
  6. 经过这些处理可直接在使用这个组件的地方 透传el-dialog组件的属性和插槽 同时能接受el-dialog抛出的方法

组件封装

<template><el-dialogv-model="dialogVisible"v-bind="$attrs"append-to-bodyclass="my-dialog"><template v-for="(_,name) in slots" #[name]="slotProps"><slot :name="name" v-bind="slotProps"></slot></template></el-dialog>
</template><script setup lang="ts">
import { useSlots, Slots } from 'vue';
defineOptions({name: 'MyDialog'
})
const slots:Slots  = useSlots();
const dialogVisible = ref(false)
const init = () => {dialogVisible.value = true
}
defineExpose({init
})
</script><style lang="scss">
// 重新定义弹窗样式
.my-dialog{}
</style>

组件使用

<template><MyDialog ref="myDialog" width="500px" top="20vh" draggable @closed="handleClosed"></MyDialog>
</template>
<script setup lang="ts">const myDialog = ref()const handleClosed = () => {console.log('closed')}onMounted(() => {myDialog.value?.init()})
</script>

http://www.ppmy.cn/news/1568419.html

相关文章

【蓝桥杯】43697.机器人塔

题目描述 X 星球的机器人表演拉拉队有两种服装&#xff0c;A 和 B。 他们这次表演的是搭机器人塔。 类似&#xff1a; A B B A B A A A B B B B B A B A B A B B A 队内的组塔规则是&#xff1a; A 只能站在 AA 或 BB 的肩上。 B 只能站在 AB 或 BA 的肩上。 你的…

在线课堂小程序设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

日志收集Day007

1.配置ES集群TLS认证: (1)elk101节点生成证书文件 cd /usr/share/elasticsearch ./bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass "" --days 3650 (2)elk101节点为证书文件修改属主和属组 chown elasticsearch:elasticsearch con…

1.31 实现五个线程的同步

1.使用互斥锁实现 1>程序代码 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h> #include &l…

Sentinel 控制台集成 Nacos 实现规则配置双向同步和持久化存储(提供改造后源码)

目录 一、前言二、Sentinel 控制台规则推送实现原理三、Sentinel控制台源码改造前置准备工作3.1、本文使用各组件版本3.2、下载Sentinel控制台源码3.3、启动Sentinel控制台3.4、应用服务实现 Sentinel 客户端动态获取 Nacos 规则配置3.4.1、添加sentinel集成nacos包 3.4.2、Nac…

.NET Core 中依赖注入的使用

ASP.NET Core中服务注入的地方 在ASP.NET Core项目中一般不需要自己创建ServiceCollection、IServiceProvider。在Program.cs的builder.Build()之前向builder.Services中注入。在Controller中可以通过构造方法注入服务。 低使用频率的服务 把Action用到的服务通过Action的参…

麒麟操作系统服务架构保姆级教程(十四)iptables防火墙四表五链和防火墙应用案例

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 防火墙在运维工作中有着不可或缺的重要性。首先&#xff0c;它是保障网络安全的关键防线&#xff0c;通过设置访问控制规则&#xff0c;可精准过滤非法网络流量&#xff0c;有效阻挡外部黑客攻击、恶…

人格分裂(交互问答)-小白想懂Elasticsearch

通过交互式追问了解一个中间件 ? 啥是Elasticsearch ! 分布式搜索和分析引擎 ? 为啥是分布式搜索&#xff0c;单体难道用不了吗 ? 实际上是说这个东西可以分布式部署 ! 单机可用但扩展性差&#xff0c;分布式通过分片、副本和负载均衡实现海量数据存储与高并发处理 ? 提…