antd upload和form结合使用

 做了个antd的上传简单封装,很烦。主要用的方法就是使用customRequest 这个覆盖上传组件的默认上传,实现自定义上传。有的地方可能比较low 因为我不知道其他方法。。

import React from 'react'
import {Icon,Upload,Modal} from 'antd'
import { uploadimg } from '../../api/login'
export default class UploadIcon extends React.Component{
  constructor(props) {
    super(props)
    const value = props.value || {};
    this.state = {
      previewImage: '',
      fileList: value|[],
      max:value.max|1
    }
  }
  customRequest = (option) => {
    const that = this
    const formData = new FormData();
    formData.append('photo', option.file);
    uploadimg(formData).then(res => {
      that.state.fileList.push({
        name: 'yyy.png',
        status: 'done',
        url: res.data[0].file_url,
      })
      that.state.fileList.map((v, i) => {
        v.uid = i
      })
      that.setState({
        fileList: that.state.fileList
      })
      that.props.onChange(that.state.fileList)
    })
  }
  render(){
    const {fileList,previewVisible,previewImage,max} = this.state
    const uploadButton = (
      <div>
        <Icon type="plus" />
        <div className="ant-upload-text">Upload</div>
      </div>
    );
    return (
      <div>
        <Upload
          action=""
          listType="picture-card"
          customRequest={this.customRequest}
          fileList={fileList}
          onPreview={this.handlePreview}
          onChange={this.handleChange}
        >
          {fileList.length >= max ? null : uploadButton}
        </Upload>
        <Modal visible={previewVisible} footer={null} onCancel={this.handleCancel}>
          <img alt="example" style={{ width: '100%' }} src={previewImage} />
        </Modal>
      </div>
    )
  }
}

下面的是antd 上传与form结合使用的方法,这个我在网上找了好久都没找到。。。。。

在form里写这个。然后因为他这个检测是用的方法来检测

<Form.Item
            label="应用图标"
          >
          {getFieldDecorator('icon', {
            initialValue: { iconList:[] },
            rules: [{ required: true,validator: this.checkImg }],
          })(
            <UploadIcon/> // 组件引入
          )}
          </Form.Item>

 添加方法: callback就是返回的错误值。

checkImg = (rule, value, callback) => {
    console.log(value)
    if (value.length) {
      callback();
      return;
    }
    callback('请添加游戏图片');
  }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值