element-plus组件之Upload(2.0)

接上篇

下面的属性就对应着回调函数,下面就一一进行介绍。

因为element-plus在封装upload组件时就自带了一个预览和删除的图标,只是没有方法实现,这里进行指明。

 

就是在图片墙列表中,自动就带了这两个图标和遮罩,下面的属性也与其相关

属性

①on-preview

 :on-preview="handlePreview",通过标签上属性的设置,我们来书写回调函数

  const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
    console.log('我是预览')
    console.log(uploadFile);
    
  }

 这样就可以看到这个回调函数的触发时机,就是我们点击每一个图标的时候触发,然后我们打印默认传递的参数来看看

我们可以看到,默认的参数就是我们点击的图片的详细信息,我们比较常用的就是URL属性,这样,就可以保存这张图片对应的地址信息,以便于本地收集和后续发送给后端。

 ②on-remove

同理,这个就是对应这哪个删除图标的回调调用时机,但是再触发该属性的钩子函数之前,还会触发另一个属性对应的钩子函数,就是:before-remove="beforeRemove"

 const beforeRemove: UploadProps['beforeRemove'] = (uploadFile, uploadFiles) => {
    return ElMessageBox.confirm(
      `Cancel the transfert of ${uploadFile.name} ?`
    ).then(
      () => true,
      () => false
    )
  }

 官网的案例就是用到了element的另一个组件ElmessageBox,消息盒子,对应的链接直接贴出来,就暂时不详细介绍了,毕竟主题是upload组件,MessageBox 消息弹框 | Element Plus

 当我们点击时出现的弹出框

删除后,对应的控制台就会打印我们 on-remove的回调

 

  const handleRemove: UploadProps['onRemove'] = (file, uploadFiles) => {
    console.log(file, uploadFiles)
  }

它拥有两个参数,显而易见,第一个参数就是删除的文件对象,第二个参数就是删除的文件数组,这里如果再做批量删除的业务时,此处就会显示数组中多个被删除的文件对象。

③on-success

④on-error

因为没有后端的服务器,上传成功的钩子打印结果看不出来,类比于失败的效果如下

  const handleError=(error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles)=>{
    console.log('上传失败')
    console.log('error',error)
    console.log('uploadFile',uploadFile)
    console.log('uploadFiles',uploadFiles)
  }

 

⑤on-progress

  const handleProgress=(event: ProgressEvent, uploadFile: UploadFile)=>{
    console.log('上传进度')
    console.log(event)
    console.log(uploadFile)

   }

第一个参数为上传进度对应的事件对象,第二个参数为上传的文件信息

 

⑥on-change

这个属性多用于再用户频繁修改上传的文件,就是在切换上传文件的时候触发

<template>
    <el-upload class="avatar-uploader" action="#" :show-file-list="false" :auto-upload="false"
        :on-change="handleChange">
        <img v-if="props.avatar" :src="uploadAvatar" class="avatar" />
        <el-icon v-else class="avatar-uploader-icon">
            <Plus />
        </el-icon>
    </el-upload>

</template>
/**
 * 文件变化时的处理函数
 *
 * @param file 文件对象
 * @param fileList 文件列表
 * @returns 无返回值
 */
const handleChange = (file:any, fileList:any) => {
    // 打印文件信息
    // 触发名为 "Mchange" 的事件,并传递文件原始数据作为参数

    emit("Mchange",file.raw)
}

 

⑦on-exceed

该属性经常与limit相互使用,当超过最大上传文件数量时,就会调用该属性的钩子函数

 

⑧before-upload

可以统一类比与上传文件的生命周期,该属性的钩子函数是最先执行的,顺序如下:before-upload-on-progress-成功on-success/失败on-error

   const beforeUpload=( uploadFile: UploadUserFile) => {
    console.log('开始上传')
    console.log(uploadFile)

   }

参数为上传的文件信息

 

⑨before-remove

总结: 这些调用回调函数的属性的执行顺序如下:上传前before-upload--上传过程on-progress--上传成功on-success/上传失败on-error--》后续操作--预览on-preview----切换on-change----删除前before-remove--删除on-remove,最后是一个上传限制on-exceed。在不同的阶段使用不同的属性,来执行不同的回调,做出相应的操作,完成时机场景中的功能需求。

Element Plus 是一个基于 Vue.js 2.0 的桌面端组件库,它包含了丰富的 UI 组件和功能,其中包括表单组件。 在 Element Plus 中,表单组件主要由 Form、FormItem、Input、Select、Radio、Checkbox、Switch、DatePicker、TimePicker、Upload组件组成。 以下是一个简单的示例,展示了如何使用 Element Plus 的表单组件: ``` <template> <el-form ref="form" :model="form" label-width="80px"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input v-model="form.password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { username: '', password: '' } }; }, methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 表单验证通过,执行提交操作 } else { // 表单验证失败,提示错误信息 } }); } } }; </script> ``` 在上面的示例中,我们使用了 Form、FormItem、Input 和 Button 组件来创建一个简单的登录表单。我们将表单数据绑定到了 data 中的 form 对象中,并在 submitForm 方法中执行表单验证操作。如果表单验证通过,我们可以在方法中执行相应的提交操作;如果表单验证失败,我们可以在 else 语句中提示错误信息。 注意,示例中使用了 $refs 来引用表单组件,并调用 validate 方法进行表单验证。这是 Element Plus 表单组件的一个常用操作,我们可以通过调用 validate 方法来触发表单验证,并通过回调函数获取验证结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mez_Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值