前端上传组件封装

本文介绍了如何封装一个前端上传组件,该组件具备上传、显示列表、拖拽排序、批量预览、下载和删除等全面功能。通过组件预览和实现的详细步骤,帮助开发者理解并应用到实际项目中。
摘要由CSDN通过智能技术生成

组件功能

提供上传、显示列表、允许拖拽排序、批量预览、下载、删除等功能

组件预览

 

组件实现

<template>

  <div>

    <el-upload

      :action="uploadUrl"

      :accept="accept"

      :limit="limit"

      :on-exceed="handleExceed"

      :before-upload="beforeUpload"

      :headers="headers"

      :show-file-list="false"

      :file-list="fileList"

      :on-success="handleSuccess"

      class="upload-demo"

      :multiple="multiple"

    >

      <slot name="uploadComponent">

        <el-button size="small" v-if="isShowDel" type="text">{ {

          uploadTxt

        }}</el-button>

      </slot>

    </el-upload>

    <slot name="filePreviewComponent"></slot>

    <draggable

      class="upload-list"

      v-model="fileArr"

      filter=".forbid"

      animation="300"

      @end="onMoveEnd"

    >

      <!-- <div> -->

      <transition-group>

        <div

          v-for="(item, index) in fileArr"

          :key="index"

          class="upload-list-item"

        >

          <div :title="item.realName" class="upload-list-item-title">

            <img

              style="margin-right:5px"

              :src="showTypeTip(item)"

              width="15px"

              height="18px"

              alt=""

            />

            <span>{ { item.realName }}</span>

          </div>

          <div class="upload_options">

            <span class="preview-class" @click="preview(item)">

              <i class="el-icon-view"></i>

              预览</span

            >

            <span class="down-class" @click="downloadFile(item)">

              <i class="el-icon-download"></i>

              下载</span

            >

            <span v-if="isShowDel" class="del-class"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue是目前最为流行的前端框架之一,而Element Plus是基于Vue 3.0开发的一款UI框架,它提供了许多实用而丰富的组件,其中包括上传组件。但是,对于一些复杂的业务场景,我们可能需要进行上传组件封装,以便更好地满足我们的需求,并且提供更好的交互效果。 Vue 3.0提供了新的Composition API来实现组件的逻辑复用,这也为我们封装上传组件提供了新的方式。根据实际需求,我们可以采用不同的封装方式来实现上传组件,下面我们以Element Plus为例,结合Vue 3.0的Composition API,简单介绍一下上传组件封装方法。 首先,我们需要引入Element Plus的上传组件,并且在组件中定义需要用到的Props参数,包括上传路径、上传文件类型等。然后,我们可以封装一个可组合的上传逻辑,以便在不同的组件中复用。具体实现方式如下: ```js // Upload.vue <template> <el-upload :action="action" :accept="accept" :before-upload="beforeUpload" :on-success="onSuccess" :on-error="onError" :show-file-list="showFileList" ref="upload" > <slot></slot> </el-upload> </template> <script> import { ref } from 'vue' export default { props: { action: { type: String, required: true }, accept: { type: String, default: '' }, showFileList: { type: Boolean, default: true } }, setup(props, { slots }) { const uploadRef = ref(null) // 点击上传前执行的逻辑 const beforeUpload = (file) => { // 执行一些操作,如限制文件类型、文件大小等 } // 上传成功执行的逻辑 const onSuccess = (response, file, fileList) => { // 执行一些操作,如更新组件状态、页面数据等 } // 上传失败执行的逻辑 const onError = (error, file, fileList) => { // 执行一些操作,如提示用户上传失败、记录日志等 } return { uploadRef, beforeUpload, onSuccess, onError } } } </script> ``` 在上面的代码中,我们引入了Vue 3.0的Composition API,并且定义了一个Upload组件,其中包含了Element Plus的上传组件,并且定义了需要用到的Props参数,如上传路径、上传文件类型等。在setup函数中,通过ref创建了一个uploadRef,用来获取组件的实例。同时,我们还定义了上传前、上传成功、上传失败等具体的上传逻辑。 接下来,我们可以在具体业务组件中使用该Upload组件,并且结合插槽等方式,实现一些自定义的上传交互。以文件上传为例,代码如下: ```js // FileUpload.vue <template> <div> <upload action="/api/upload" accept=".jpeg,.png,.gif" @click="handleClick" @success="handleSuccess" @error="handleError" ref="uploader" > <el-button>{{ uploading ? '正在上传' : '选择文件' }}</el-button> </upload> </div> </template> <script> import Upload from './Upload.vue' import { ref, reactive } from 'vue' export default { components: { Upload }, setup() { const uploader = ref(null) const state = reactive({ uploading: false }) const handleClick = () => { uploader.value.$refs.upload.click() } const handleSuccess = (response) => { console.log(response) state.uploading = false } const handleError = (error) => { console.log(error) state.uploading = false } return { uploader, state, handleClick, handleSuccess, handleError } } } </script> ``` 在上面的代码中,我们引入了刚才封装的Upload组件,并且通过@click事件触发选择文件的逻辑。同时,我们定义了state,用来控制上传状态,并且通过处理上传成功或者失败的回调,更新上传状态和提示用户上传结果。 通过上述代码,我们可以看到,使用Vue 3.0的Composition API结合Element Plus,实现上传组件封装非常方便,并且可以在不同的业务场景中复用。当然,具体的封装方式还需要结合具体需求来进行选择和实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃西瓜不吐籽_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值