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

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

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-dialog
    v-model="dialogVisible"
    v-bind="$attrs"
    append-to-body
    class="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.kler.cn/a/519137.html

相关文章:

  • IoTDB 2025 春节值班与祝福
  • MySQL数据库基础
  • 深度学习项目--基于LSTM的糖尿病预测探究(pytorch实现)
  • Redis实战(黑马点评)——涉及session、redis存储验证码,双拦截器处理请求
  • 【2024年华为OD机试】 (A卷,100分)- 整理扑克牌(JavaScriptJava PythonC/C++)
  • SocketCAN
  • Maui学习笔记- SQLite简单使用案例
  • 基于ESP32的桌面小屏幕实战[6]:环境搭建和软件基础
  • 一次StarRocks分析的经历
  • 第25章 测试驱动开发模式深度剖析
  • unity 粒子系统实现碰撞检测(collision)且使粒子不受力
  • tcp/ip协议和ip协议,tcp/ip协议 ip协议
  • 探索JavaScript:网页设计中的创意与实践
  • leetcode——翻转链表(java)
  • (回溯分割)leetcode93 复原IP地址
  • AI学习(vscode+deepseek+cline)
  • INMP441一款微型电容式麦克风(MEMS麦克风)
  • Zookeeper(28)Zookeeper的线性化写入和顺序一致性读是什么?
  • 代码随想录day4
  • 【论文推荐|深度学习,滑坡检测,多光谱影像,自然灾害,遥感】2022年Landslide4Sense竞赛成果:基于多源卫星影像的先进滑坡检测算法研究(一)
  • 手机app如何跳过无障碍权限实现弹框自动点击-ADB连接专题
  • Redis 详解
  • 开源智慧园区管理系统对比五款主流产品探索智能运营新模式
  • PCB布线注意事项(1)
  • 深度学习 | 表示学习 | 卷积神经网络|翻转卷积核是干啥呢|09
  • 搭建Spring Boot开发环境