react封装一个简单的upload组件(待完善)

目录

  • react封装一个简单的upload组件
    • component / uploadImg / uploadImg.jsx
    • 使用
    • 效果

react封装一个简单的upload组件

component / uploadImg / uploadImg.jsx

import React, { useState } from 'react';
import { LoadingOutlined, PlusOutlined } from '@ant-design/icons';
import { message, Upload } from 'antd';
const getBase64 = (img, callback) => {const reader = new FileReader();reader.addEventListener('load', () => callback(reader.result));reader.readAsDataURL(img);
};
// 上传前校验
const beforeUpload = (file) => {const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';if (!isJpgOrPng) {message.error('只能上传图片格式为JPG/PNG的文件!');}const isLt2M = file.size / 1024 / 1024 < 2;if (!isLt2M) {message.error('图片大小不能超过2MB!');}return isJpgOrPng && isLt2M;
};
const UploadImg = () => {const [loading, setLoading] = useState(false);const [imageUrl, setImageUrl] = useState();// const handleChange = (info) => { // 监听文件的上传状态//   if (info.file.status === 'uploading') {//     setLoading(true);//     return;//   }//   if (info.file.status === 'done') {//     // Get this url from response in real world.//     getBase64(info.file.originFileObj, (url) => {//       setLoading(false);//       setImageUrl(url);//     });//   }// };// 自定义上传函数const customUpload = (info)  => {console.log('customUpload',info);setLoading(true);getBase64(info.file, (url) => { // 把本地图片转换为base64展示console.log('url',url);setLoading(false);setImageUrl(url);});}const uploadButton = (<div>{loading ? <LoadingOutlined /> : <PlusOutlined />}<divstyle={{marginTop: 8,}}>Upload</div></div>);return (// onChange={handleChange}<Uploadname="avatar"listType="picture-card"className="avatar-uploader"showUploadList={false}customRequest={customUpload}beforeUpload={beforeUpload}>{imageUrl ? (<imgsrc={imageUrl}alt="avatar"style={{width: '100%',}}/>) : (uploadButton)}</Upload>);
};
export default UploadImg;

使用

<UploadImg />

效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/145443.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【leetcode报错】 leetcode格式问题解决:error: stray ‘\302’ in program [solution.c]

leetcode格式问题解决 一、情景再现二、报错原因三、解决方法四、修正结果 一、情景再现 二、报错原因 该错误是指 源程序中有非法字符&#xff0c;需要将非法字符去掉。 一般是由于coder 1.使用中文输入法 或者 2.从别的地方直接复制粘贴代码 造成的。 代码中出现了 中文空格&…

云HIS系统,Cloud HIS system,云HIS医院信息管理系统源码

通过云HIS平台,可以减少医院投资,无需自建机房和系统,快速实现信息化服务。系统升级及日常维护服务有云平台提供,无需配备专业IT维护人员进行系统维护。 一、his系统和云his系统的区别 His系统和云his系统是两种不同的计算平台&#xff0c;它们在技术架构上存在很大的差异。下…

深入 Meven:构建杰出的软件项目的完美工具

掌握 Meven&#xff1a;构建更强大、更智能的应用程序的秘诀 Maven1.1 初识Maven1.1.1 什么是Maven1.1.2 Maven的作用 02. Maven概述2.1 Maven介绍2.2 Maven模型2.3 Maven仓库2.4 Maven安装2.4.1 下载2.4.2 安装步骤 03. IDEA集成Maven3.1 配置Maven环境3.1.1 当前工程设置3.1.…

STM32F4X之中断二

一、外部中断 外部中断&#xff1a;外部中断的中断是相对于外部中断控制器&#xff08;EXTI&#xff09;来说&#xff0c;如下图所示&#xff1a; EXTI掌管着23根中断线&#xff0c;具体分布图下&#xff1a; 16根连接GPIO口&#xff0c;如下图&#xff1a; 所有的0口连接到中…

【Qt控件之QToolBox】介绍及使用

概述 QToolBox类提供了一个列式的带有选项卡的小部件条目。工具箱是一个小部件&#xff0c;以一个列式的选项卡显示在上方&#xff0c;并在当前选项卡下方显示当前的小部件条目。每个选项卡在选项卡列中有一个索引位置。选项卡的小部件条目是一个QWidget。 每个小部件条目都有…

内网穿透的应用-如何通过TortoiseSVN+内网穿透,实现公网提交文件到内网SVN服务器?

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统&#xff0c;它与Apache Subversion&#xff08;SVN&#xff09;集成在一起&#xff0c;提供了一个用户友好的界面&#xff0c;方便用…

智慧公厕设备选型攻略,打造智能化便利生活体验

智慧公厕设备的选型对于打造智能化便利生活体验起着至关重要的作用。在不断提升城市品质的背景下&#xff0c;智慧公厕已成为城市建设中的一项重要内容。在选购智慧公厕设备时&#xff0c;我们需要考虑到不同版本的功能要求&#xff0c;确保公厕设备的质量和性能。本文以智慧公…

【广州华锐互动】关于物理力学的3D实验实操平台

在科学的广阔领域中&#xff0c;物理力学是一个至关重要的分支&#xff0c;它探索了物体在力作用下的运动规律。然而&#xff0c;传统的物理实验往往需要复杂的设备和大量的操作&#xff0c;这对于学生来说是一项巨大的挑战。为了解决这个问题&#xff0c;广州华锐互动开发了物…

基于斑马优化的BP神经网络(分类应用) - 附代码

基于斑马优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于斑马优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.斑马优化BP神经网络3.1 BP神经网络参数设置3.2 斑马算法应用 4.测试结果&#xff1a;5.M…

c语言进制的转换二进制转换10进制

c语言进制的转换之二进制转换10进制 c语言的进制的转换 c语言进制的转换之二进制转换10进制一、二进制转换10进制的方法二、10进制程序打印 一、二进制转换10进制的方法 二进制&#xff1a; 二进制逢二进一&#xff0c;所有的数组是0、1组成 十进制转二进制&#xff1a; 除二反…

【计算机网络】UDP的报文结构和注意事项

UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是一种无连接的协议&#xff0c;它在传输层中提供了简单、不可靠的数据传输服务。与TCP&#xff08;Transmission Control Protocol,传输控制协议&#xff09;不同&#xff0c;UDP不需要建立连接&…

什么是跨浏览器测试,为什么跨浏览器测试很重要?

一、什么是跨浏览器测试&#xff1f; 在跨浏览器测试中&#xff0c;对网站或移动应用程序进行测试以确保其“与浏览器无关”&#xff0c;即跨各种浏览器、设备、操作系统及其组合工作。因为每个浏览器解析文档对象模型(DOM)的方式都大不相同&#xff0c;所以输出对于被测Web应…