当前位置:网站首页>antd upload beforeUpload中禁止触发onchange
antd upload beforeUpload中禁止触发onchange
2022-07-06 09:28:00 【梦想身高1米8】
官网:https://ant.design/components/upload-cn/#components-upload-demo-upload-png-only
稍微加点注释:beforeUpload属性返回false或Promise.reject,只会阻止上传(不会触发上传的请求),但是onchange函数还是会触发的,想要阻止onchange函数,需要beforeUpload返回Upload.LIST_IGNORE
1 返回false或Promise.reject
<html>
<head>
<script src="https://unpkg.com/[email protected]/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/antd/4.20.6/antd.min.js" integrity="sha512-Pn2PLpM5OByFVBBfe517wK9LQCCbQsM4sVl7y3yHDCpHL/X/k6st3cre9SUiopZrbBiOQiSDgvKMOagM6MWCnA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/antd/4.20.6/antd.min.css" integrity="sha512-GKJ7hcKFof/Chhk79mhxA8egInBxwypeeD9sF/fAlTJ75n0YvjQ8mSofBD7KahRnMTzdtUFF5+YWjnXTew8Y0w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
<body>
<div id="root"></div>
</body>
<script type="text/babel"> const e = React.createElement; const custom = () => {
const [number, setNumber] = React.useState(0); const beforeUpload = file => {
const isPNG = file.type == 'image/png'; return isPNG; // return new Promise(()=>{
// const isPNG = file.type == 'image/png'; // if(isPNG) {
// resolve(); // } // else {
// reject(); // } // }) } const onChange = info => {
antd.message.info('触发onchange') if (info.file.status == 'uploading') {
antd.message.info('正在上传') } if (info.file.status === 'done') {
antd.message.info('上传成功') } else if (info.file.status === 'error') {
antd.message.info('上传失败') } } return <antd.Upload name='file' action='https://www.mocky.io/v2/5cc8019d300000980a055e76' headers={
{
authorization: 'authorization-text', }} onChange={
info => onChange(info)} beforeUpload={
beforeUpload} > <antd.Button>上传</antd.Button> </antd.Upload > } const domContainer = document.querySelector('#root'); ReactDOM.render(e(custom), domContainer); </script>
</html>

2 返回Upload.LIST_IGNORE
<html>
<head>
<script src="https://unpkg.com/[email protected]/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/babel.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/antd/4.20.6/antd.min.js" integrity="sha512-Pn2PLpM5OByFVBBfe517wK9LQCCbQsM4sVl7y3yHDCpHL/X/k6st3cre9SUiopZrbBiOQiSDgvKMOagM6MWCnA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/antd/4.20.6/antd.min.css" integrity="sha512-GKJ7hcKFof/Chhk79mhxA8egInBxwypeeD9sF/fAlTJ75n0YvjQ8mSofBD7KahRnMTzdtUFF5+YWjnXTew8Y0w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
<body>
<div id="root"></div>
</body>
<script type="text/babel"> const e = React.createElement; const custom = () => {
const [number, setNumber] = React.useState(0); const beforeUpload = file => {
const isPNG = file.type == 'image/png'; return isPNG || antd.Upload.LIST_IGNORE; // return new Promise(()=>{
// const isPNG = file.type == 'image/png'; // if(isPNG) {
// resolve(); // } // else {
// return antd.Upload.LIST_IGNORE; // } // }) } const onChange = info => {
antd.message.info('触发onchange') if (info.file.status == 'uploading') {
antd.message.info('正在上传') } if (info.file.status === 'done') {
antd.message.info('上传成功') } else if (info.file.status === 'error') {
antd.message.info('上传失败') } } return <antd.Upload name='file' action='https://www.mocky.io/v2/5cc8019d300000980a055e76' headers={
{
authorization: 'authorization-text', }} onChange={
info => onChange(info)} beforeUpload={
beforeUpload} > <antd.Button>上传</antd.Button> </antd.Upload > } const domContainer = document.querySelector('#root'); ReactDOM.render(e(custom), domContainer); </script>
</html>

我试了一下,如果使用promise,如果不返回resove()或reject()(啥返回都没有的情况),onchange也不会触发。
ps:网页里使用react和antd的情况,可以看这个
https://blog.csdn.net/weixin_43915401/article/details/125046690
边栏推荐
- Penetration test (4) -- detailed explanation of meterpreter command
- Information security - Epic vulnerability log4j vulnerability mechanism and preventive measures
- 渗透测试 ( 5 ) --- 扫描之王 nmap、渗透测试工具实战技巧合集
- Understand what is a programming language in a popular way
- 921. Minimum additions to make parentheses valid
- b站 實時彈幕和曆史彈幕 Protobuf 格式解析
- HDU - 6024 building shops (girls' competition)
- C basic grammar
- [exercise-9] Zombie's Treasury test
- F - birthday cake (Shandong race)
猜你喜欢

第 300 场周赛 - 力扣(LeetCode)

Borg maze (bfs+ minimum spanning tree) (problem solving report)

“鬼鬼祟祟的”新小行星将在本周安全掠过地球:如何观看

QT实现窗口置顶、置顶状态切换、多窗口置顶优先关系

Determine the Photo Position

读取和保存zarr文件
![[teacher Gao UML software modeling foundation] collection of exercises and answers for level 20 cloud class](/img/57/bc6eda91f7263acda38b9ee8732318.png)
[teacher Gao UML software modeling foundation] collection of exercises and answers for level 20 cloud class

Penetration test (3) -- Metasploit framework (MSF)

Pyside6 signal, slot
![[exercise-5] (UVA 839) not so mobile (balance)](/img/8e/48dcf75f7347b36301df6fc129c09d.png)
[exercise-5] (UVA 839) not so mobile (balance)
随机推荐
Candy delivery (Mathematics)
栈的经典应用—括号匹配问题
860. Lemonade change
Sanic异步框架真的这么强吗?实践中找真理
Openwrt source code generation image
Flag framework configures loguru logstore
【练习-2】(Uva 712) S-Trees (S树)
Pyside6 signal, slot
TCP's three handshakes and four waves
渗透测试 ( 4 ) --- Meterpreter 命令详解
QT实现圆角窗口
[exercise-8] (UVA 246) 10-20-30== simulation
socket通讯
1855. Maximum distance of subscript alignment
Codeforces Round #799 (Div. 4)A~H
Information security - threat detection engine - common rule engine base performance comparison
MySQL import database error [err] 1273 - unknown collation: 'utf8mb4_ 0900_ ai_ ci’
QWidget代码设置样式表探讨
Openwrt build Hello ipk
QT模拟鼠标事件,实现点击双击移动拖拽等