react动态添加组件属性(react使用antd的上传组件实现文件表单一起提交功能完整代码)
类别:编程学习 浏览量:2739
时间:2021-10-24 10:30:28 react动态添加组件属性
react使用antd的上传组件实现文件表单一起提交功能完整代码最近在刚刚开始使用react做项目,非常不熟练,非常小白。小白同学可以阅读了,因为我会写的非常简单,直白。
项目中需要实现表单中带附件提交,上传文件不单独保存调接口。
import { Form, Button, Upload } from 'antd'; import { UploadOutlined } from '@ant-design/icons'; const normFile = (e) => { console.log('Upload event:', e); if (Array.isArray(e)) { return e; } return e && e.fileList; }; const Demo = () => { const onFinish = (values) => { console.log('Received values of form: ', values); }; return ( <Form name="validate_other" onFinish={onFinish} initialValues={{ 'input-number': 3, 'checkbox-group': ['A', 'B'], rate: 3.5, }} > <Form.Item name="upload" label="Upload" valuePropName="fileList" getValueFromEvent={normFile} > <Upload name="logo" action="/upload.do" listType="picture"> <Button icon={<UploadOutlined />}>Click to upload</Button> </Upload> </Form.Item> </Form> ); }; ReactDOM.render(<Demo />, mountNode);
这里是一个表单里面包含了一个上传文件功能。(其实这里的代码就是Antd官方文档的例子,我只进行了删除多余部分,别的都是原样放着)。
下面做一下解释。
首先我们要思考怎么实现让文件不要自动上传。antd文档是有给一个方法的就是beforeUpload,当beforeUpload方法返回false时就会停止文件的上传。
以上就可以停止文件的自动上传。接下来,我们考虑怎么把上传的文件获取并存在传给后端的参数中。
这部分代码就是上传代码的方法,因为我们需要上传文件和表单一起提交。所以我们在这个方法里进行一些修改,把文件存在formData对象里。这里先说明一下formData对象,主要就是用来传文件给后端用的。
先new一个formData对象,在把文件append进去,这样就已经把上传的文件存在了formData里。
表单中其它数据也可以通过同种方法存在formData中,把formData传给后端即可。
此时还有一个需要注意的问题。
fetch(url, { //fetch请求 method: 'POST', body: formData, })
或
axios({ //axios method: 'post', url: url, data: formData, }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });
一定要设置了,才可以传参数成功,不然调用接口的时候是不会成功带参数的。
什么样子是成功带了参数呢,可以在相关页面点击F12查看,network,最下方会有Form Data,一栏,会展示所有传过去的参数。
最终代码如下:
import { Form, Button, Upload } from 'antd'; import { UploadOutlined } from '@ant-design/icons'; const normFile = (e) => { console.log('Upload event:', e); if (Array.isArray(e)) { return e; } return e && e.fileList; }; const beforeUpload = ({fileList}) => { return false; } const Demo = () => { const onFinish = (values) => { console.log('Received values of form: ', values); }; return ( <Form name="validate_other" onFinish={onFinish} initialValues={{ 'input-number': 3, 'checkbox-group': ['A', 'B'], rate: 3.5, }} > <Form.Item name="upload" label="Upload" valuePropName="fileList" getValueFromEvent={normFile} > <Upload name="logo" beforeUpload={beforeUpload} > <Button icon={<UploadOutlined />}>Click to upload</Button> </Upload> </Form.Item> </Form> ); }; ReactDOM.render(<Demo />, mountNode);
到此这篇关于react使用antd的上传组件实现文件表单一起提交的文章就介绍到这了,更多相关react实现文件表单提交内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
您可能感兴趣
- react native常用组件(react native环境安装流程)
- reactmap给了key仍然提示错误(react为什么不推荐使用index作为key)
- vue3.0 如何使用useroute(详解vue3中setUp和reactive函数的用法)
- linux虚拟内存实现需要哪六种机制(解析Linux高性能网络IO和Reactor模型)
- react native web白屏(关于React Native 无法链接模拟器的问题)
- react的setstate第二个参数(示例详解react中useState的用法)
- vue3 props用法(vue3组合API中setup、 ref、reactive的使用大全)
- vue中的ref(Vue3.0中Ref与Reactive的区别示例详析)
- react怎么绑定state(react纯函数组件setState更新页面不刷新的解决)
- react动态添加组件属性(react使用antd的上传组件实现文件表单一起提交功能完整代码)
- react路由原理解析(React配置子路由的实现)
- html5创作(HTML5录音实践总结Preact)
- react新手指引页面编写(React+TypeScript进行项目构建案例讲解)
- react高阶组件怎么用(React 高阶组件HOC用法归纳)
- reactnative动态设置值(react native实现监控手势上下拉动效果)
- vue3中的setup的参数(Vue3中ref与reactive的详解与扩展)
- 王牌部队,你看的剧情我看的时尚(你看的剧情我看的时尚)
- 被鉴定的古董价值300万 当心,你可能遇到诈骗了(被鉴定的古董价值300万)
- 英语难学吗(初中英语难学吗)
- 如何追女孩子(如何追女孩子的技巧和方法)
- 是不是快乐全被你拿走了(而是你得到的)
- 世界上只有妈妈好(世界上只有妈妈好的歌词)
热门推荐
- nginx怎么进一步配置(Nginx已编译的nginx-添加新模块)
- pythonmatplotlib怎么设置图像(完美解决Python matplotlib绘图时汉字显示不正常的问题)
- selenium是否登录成功(使用selenium模拟登录解决滑块验证问题的实现)
- mysql主从配置教程(MySQL大库搭建主从的一种思路分享)
- jquery中wrap、wrapAll、wrapInner
- 云服务器的使用技术(云服务器运行如何实现的原理)
- java sql注入技术解决方案怎么写(sql注入过程详解_动力节点Java学院整理)
- mysql索引面试总结(Mysql数据库索引面试题程序员基础技能)
- tomcat服务如何在eclipse中配置(HBuilderX配置tomcat外部服务器查看编辑jsp界面的方法详解)
- php抽奖功能(php+lottery.js实现九宫格抽奖功能)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9