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

vue3二次封装UI组件

直接上代码

<template>
  <el-upload
    class="lth_upload"
    :action="`${baseUrl}/file/upload`"
    :headers="uploadHeader"
    v-bind="$attr"
  >
    <template v-for="(_, key) in $slots" #[key]="valueData">
      <slot :name="key" v-bind="valueData || {}"></slot>
    </template>
  </el-upload>
</template>
<script setup lang="ts">
import { ref, useAttrs, useSlots } from "vue";
import { uploadHeader } from "@/utils/uploadHeader";
const $attr = useAttrs();
const $slot = useSlots();
const baseUrl = import.meta.env.VITE_BASE_API;
</script>
<style scoped lang="scss"></style>

通过useAttrs()获取组件上所有的属性,使用v-bind="$attr"和vue3的透传将其绑定在组件上,通过useSlots()方法来获取所传入的所有插槽,通过动态生成的方式,来实现二次组件的插槽系统

使用示例

  		<LthUpload
   			v-model:file-list="ruleForm.originImgList"
            :accept="['.png', '.jpg', '.jpeg', '.gif']"
            list-type="picture-card"
            :before-upload="beforeUpload"
            :limit="5"
          >
            <el-icon><Plus /></el-icon>
            <template #tip>
              <div class="el-upload__tip">每张图片大小限制5MB,最多上传5张</div>
            </template>
          </LthUpload>

http://www.kler.cn/a/374945.html

相关文章:

  • axios源码分析之请求adapter
  • 初认识构建工具
  • 程序设计 基础篇
  • 使用yolov3配置文件训练自己的数据
  • java执行python时脚本引用动态配置文件遇到的问题
  • WebSocket与Socket
  • 深入理解 Dockerfile 和 docker-compose[实战篇]
  • 持续监控和反馈:工具与方法详解
  • Python数据类型:数字
  • 信息学奥赛复赛考点变化趋势分析:动态规划与数据结构成主流
  • .NET Core WebApi第6讲:WebApi的前端怎么派人去拿数据?(区别MVC)
  • STM32之看门狗
  • C++学习路线(二十七)
  • 12. 内存管理
  • 修改Windows远程桌面3389端口
  • 一. nginx学习笔记 又长又臭篇幅
  • Go如何实现自旋锁
  • 【项目小技巧】【C++】 Debug 日志输出 调用者的函数名,所在文件名和行号
  • C语言学,标准库 <string.h>
  • 自适应神经网络架构:原理解析与代码示例
  • 操作系统期中复习第一单元
  • Docker部署教程:打造流畅的斗地主网页小游戏
  • 大数据新视界 -- 大数据大厂之大数据环境下的网络安全态势感知
  • 访问jenkins页面报错
  • 5G三大应用场景中的URLLC
  • 全新大模型框架Haystack,搭建RAG pipeline