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实现分页效果)
- react源码教程(详解React 代码共享最佳实践方式)
- reactnative示例代码(React Native项目框架搭建的一些心得体会)
- reactnative混合开发教程(教你使用vscode 搭建react-native开发环境)
- react 组件如何发布(React如何创建组件)
- react新手指引页面编写(React+TypeScript进行项目构建案例讲解)
- react高阶组件怎么用(React 高阶组件HOC用法归纳)
- react初学难点(使用react的7个避坑案例小结)
- react 封装下拉选择框(React鼠标多选功能的配置方法)
- react配置上下文路由(React中Portals与错误边界处理实现)
- react native web白屏(关于React Native 无法链接模拟器的问题)
- linux虚拟内存实现需要哪六种机制(解析Linux高性能网络IO和Reactor模型)
- react定时任务(手把手带你用React撸一个日程组件)
- react代码质量检查(react如何实现一个密码强度检测器详解)
- react常用设计模式(提高React界面性能的十个技巧)
- react组件之间通信(React传递参数的几种方式)
- 她救了被绑架的他,而这一切竟是一场阴谋...(她救了被绑架的他)
- 冬季养殖这6种阴生植物,方便又好养,你家有么(冬季养殖这6种阴生植物)
- 阴生植物为什么不怕照不到阳光(阴生植物为什么不怕照不到阳光)
- 阴生环境 耐阴地被植物,你知道哪些(阴生环境耐阴地被植物)
- 常见的喜阴植物有哪些 养室内盆栽就在这里选(常见的喜阴植物有哪些)
- 这8种耐阴植物,营造阴生植物花境,也是一个不错的选择(营造阴生植物花境)
热门推荐
- python选择排序最大最小同时排序(Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例)
- php性能比较(php使用yield对性能提升的测试实例分析)
- 面试时如何谈自己的优点
- vscode如何配置python环境(VSCode Python开发环境配置的详细步骤)
- Resharper的使用
- tomcat在linux系统安装步骤(Tomcat的卸载和重装的实现图文)
- 织梦后台常见问题(登录织梦后台提示用户名不存在的解决方法介绍)
- vuephp后台开发框架(Vue+thinkphp5.1+axios实现文件上传)
- 宝塔面板怎么修改默认端口(如何修改宝塔Linux面板默认的端口号8888?)
- iview 全局初始化组件(iview 权限管理的实现)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9