亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react使用antd的上傳組件實現文件表單一起提交功能

發布時間:2021-06-29 14:35:57 來源:億速云 閱讀:274 作者:chen 欄目:開發技術

本篇內容主要講解“react使用antd的上傳組件實現文件表單一起提交功能”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“react使用antd的上傳組件實現文件表單一起提交功能”吧!

項目中需要實現表單中帶附件提交,上傳文件不單獨保存調接口。

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時就會停止文件的上傳。

react使用antd的上傳組件實現文件表單一起提交功能

react使用antd的上傳組件實現文件表單一起提交功能

以上就可以停止文件的自動上傳。接下來,我們考慮怎么把上傳的文件獲取并存在傳給后端的參數中。

react使用antd的上傳組件實現文件表單一起提交功能

這部分代碼就是上傳代碼的方法,因為我們需要上傳文件和表單一起提交。所以我們在這個方法里進行一些修改,把文件存在formData對象里。這里先說明一下formData對象,主要就是用來傳文件給后端用的。

react使用antd的上傳組件實現文件表單一起提交功能

先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的上傳組件實現文件表單一起提交功能”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青川县| 重庆市| 平和县| 高邮市| 亚东县| 会宁县| 嘉义市| 基隆市| 仙桃市| 霸州市| 青铜峡市| 盐边县| 彭泽县| 定襄县| 云南省| 益阳市| 陵水| 洪湖市| 平安县| 长岛县| 通渭县| 绥滨县| 广汉市| 聂拉木县| 武邑县| 昭通市| 韶山市| 内乡县| 濮阳市| 浦江县| 通州市| 灵寿县| 呼图壁县| 保山市| 湖州市| 梅河口市| 临潭县| 石首市| 论坛| 隆子县| 内乡县|