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子组件的动态参数(浅谈React Component生命周期函数)
- react usestate实现原理(浅谈react useEffect闭包的坑)
- react和antd管理系统(手把手教你从零开始react+antd搭建项目)
- reactnative ios(详解React Native与IOS端之间的交互)
- react代码展示(教你如何从 html 实现一个 react)
- vue react和angular(详解React Angular Vue三大前端技术)
- react 的事件机制(React如何优雅的捕获异常)
- vscode react插件(基于visual studio code + react 开发环境搭建过程)
- react组件的参数怎样定义的(详解React中组件之间通信的方式)
- react的基本知识(React中refs的一些常见用法汇总)
- react 组件如何发布(React如何创建组件)
- react定时任务(手把手带你用React撸一个日程组件)
- react中state的作用是什么(React中useEffect 与 useLayoutEffect的区别)
- vue中的ref(Vue3.0中Ref与Reactive的区别示例详析)
- react怎么添加动态html(react中的DOM操作实现)
- react 封装下拉选择框(React鼠标多选功能的配置方法)
- 蓝底证件照怎么制作 证件照换底色 换尺寸快速搞定(蓝底证件照怎么制作)
- 你喜欢足球吗 足球如何点亮世界的(足球如何点亮世界的)
- 不可分鸽是什么梗(不可分鸽是什么梗)
- 古代的鸽子是爱情的象征,并非和平的使者(古代的鸽子是爱情的象征)
- 一课译词 放鸽子(一课译词放鸽子)
- 终于来了,淘宝更改账户名测试中,快去看看你能不能修改(淘宝更改账户名测试中)
热门推荐
- 网页502错误怎么解决(502 bad gateway是什么意思?网页打不开出现502 bad gateway怎么解决?)
- 云服务器租用的因素(云服务器租用都需要注意什么?如何选择好的云服务器商?)
- iis默认文档位置(在IIS6中新增可下载文件类型的方法)
- C#中Nullable<T>
- mysql中基本语句(MySQL中explain语句的基本使用教程)
- linux中pwd怎么用(WDCP控制面板的常用linux命令集)
- 织梦dedecms自定义表单选项必填修改解决方法(织梦dedecms自定义表单选项必填修改解决方法)
- css中outline
- laravel在中间件内生成参数并且传递到控制器中的2种姿势(laravel在中间件内生成参数并且传递到控制器中的2种姿势)
- html一行两列布局代码(CSS实现页面两列布局与三列布局的方法示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9