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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值