React實戰之Ant Design—Upload上傳_附件上傳
Upload組件大家都在官方文檔中看過了,但寫的時候還是會遇到許多問題,一些新手看了文檔后感覺無從下手,本文過多的簡紹就不說了,直接看代碼和注釋,直接用就行
我直接放在form表單中,因為實戰中單個附件上傳很少幾,乎都在form表單中加入一個附件上傳所以為了更好的應用,我直接就放在form表單中應用
import React, { PureComponent } from 'react'; import {Form, Button, Icon,Upload} from 'antd'; const FormItem = Form.Item; @Form.create() class xxx extends PureComponent { state = { fileList: [],//存放上傳信息:比如路徑、文件名 imgList: [],//存放回顯信息:修改時的路徑、文件名 }; //form表單提交事件 handleSubmit = e => { const { dispatch, form } = this.props; e.preventDefault(); form.validateFieldsAndScroll((err, values) => { if (!err) { const { imgList } = this.state values.imgList = JSON.stringify(imgList); console.log('values', values); } }); }; //上傳事件 onChange = ({ fileList }) => { console.log('file', fileList); let imgList = []; fileList.map(function (item, key) { if (item.response && item.response.success) { console.log('item.response',item.response); imgList.push({ url: item.response.url, Name: item.response.name });//這的參數具體看上傳成功后返回的值,打印的item.response } else { //回顯 if (item.url) { //拼接'http:// 如果路徑可以直接使用不需要拼接 imgList.push({ url: item.url.replace('http://', ""), Name: item.name }); } } }); this.setState({ fileList, imgList }); } render() {//const {form: { getFieldDecorator, getFieldValue }} = this.props; const { fileList } = this.state const props = { name: 'UploadFile',//name得看接口需求,name與接口需要的name一致 action: 'http://.......',//接口路徑 data: { },//接口需要的參數,無參數可以不寫 multiple: true,//支持多個文件 showUploadList: true,//展示文件列表 } return ( <Form onSubmit={this.handleSubmit}><FormItem label="附件"> <Upload {...props} fileList={fileList} onChange={this.onChange} > <Button> <Icon type="upload" /> 上傳附件 </Button> </Upload>, </FormItem> <FormItem > <Button type="primary" htmlType="submit" > 提交 </Button> </FormItem> </Form> ); } export default xxx;
代碼可以用於新增功能和編輯功能,如有問題歡迎聯系!不到之處多多指教