欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

react使用antd的上傳組件實(shí)現(xiàn)文件表單一起提交功能(完整代碼)

 更新時(shí)間:2021年06月29日 11:19:39   作者:wangshuai33  
最近在做一個(gè)后臺(tái)管理項(xiàng)目,涉及到react相關(guān)知識(shí),項(xiàng)目需求需要在表單中帶附件提交,怎么實(shí)現(xiàn)這個(gè)功能呢?下面小編給大家?guī)砹藃eact使用antd的上傳組件實(shí)現(xiàn)文件表單一起提交功能,一起看看吧

最近在剛剛開始使用react做項(xiàng)目,非常不熟練,非常小白。小白同學(xué)可以閱讀了,因?yàn)槲視?huì)寫的非常簡(jiǎn)單,直白。

項(xiàng)目中需要實(shí)現(xiàn)表單中帶附件提交,上傳文件不單獨(dú)保存調(diào)接口。

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);

這里是一個(gè)表單里面包含了一個(gè)上傳文件功能。(其實(shí)這里的代碼就是Antd官方文檔的例子,我只進(jìn)行了刪除多余部分,別的都是原樣放著)。

下面做一下解釋。

首先我們要思考怎么實(shí)現(xiàn)讓文件不要自動(dòng)上傳。antd文檔是有給一個(gè)方法的就是beforeUpload,當(dāng)beforeUpload方法返回false時(shí)就會(huì)停止文件的上傳。

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

這部分代碼就是上傳代碼的方法,因?yàn)槲覀冃枰蟼魑募捅韱我黄鹛峤?。所以我們?cè)谶@個(gè)方法里進(jìn)行一些修改,把文件存在formData對(duì)象里。這里先說明一下formData對(duì)象,主要就是用來傳文件給后端用的。

先new一個(gè)formData對(duì)象,在把文件append進(jìn)去,這樣就已經(jīng)把上傳的文件存在了formData里。

表單中其它數(shù)據(jù)也可以通過同種方法存在formData中,把formData傳給后端即可。

此時(shí)還有一個(gè)需要注意的問題。

fetch(url, {

        //fetch請(qǐng)求

        method: 'POST',

        body: formData,

})

 axios({ //axios
        method: 'post',
        url: url,
        data: formData,
    })
    .then(function (response) {
        console.log(response);
    })
    .catch(function (error) {
        console.log(error);
    });

一定要設(shè)置了,才可以傳參數(shù)成功,不然調(diào)用接口的時(shí)候是不會(huì)成功帶參數(shù)的。

什么樣子是成功帶了參數(shù)呢,可以在相關(guān)頁(yè)面點(diǎn)擊F12查看,network,最下方會(huì)有Form Data,一欄,會(huì)展示所有傳過去的參數(shù)。

最終代碼如下:

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);

到此這篇關(guān)于react使用antd的上傳組件實(shí)現(xiàn)文件表單一起提交的文章就介紹到這了,更多相關(guān)react實(shí)現(xiàn)文件表單提交內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React+Redux實(shí)現(xiàn)簡(jiǎn)單的待辦事項(xiàng)列表ToDoList

    React+Redux實(shí)現(xiàn)簡(jiǎn)單的待辦事項(xiàng)列表ToDoList

    這篇文章主要為大家詳細(xì)介紹了React+Redux實(shí)現(xiàn)簡(jiǎn)單的待辦事項(xiàng)列表ToDoList,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • react中useState使用:如何實(shí)現(xiàn)在當(dāng)前表格直接更改數(shù)據(jù)

    react中useState使用:如何實(shí)現(xiàn)在當(dāng)前表格直接更改數(shù)據(jù)

    這篇文章主要介紹了react中useState的使用:如何實(shí)現(xiàn)在當(dāng)前表格直接更改數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • react解析html字符串方法實(shí)現(xiàn)

    react解析html字符串方法實(shí)現(xiàn)

    在使用reactjs庫(kù)的時(shí)候,會(huì)遇到將一段html的字符串,然后要將它插入頁(yè)面中以html的形式展現(xiàn),本文主要介紹了react解析html字符串方法實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • React中路由參數(shù)如何改變頁(yè)面不刷新數(shù)據(jù)的情況

    React中路由參數(shù)如何改變頁(yè)面不刷新數(shù)據(jù)的情況

    這篇文章主要介紹了React中路由參數(shù)如何改變頁(yè)面不刷新數(shù)據(jù)的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 淺談React 屬性和狀態(tài)的一些總結(jié)

    淺談React 屬性和狀態(tài)的一些總結(jié)

    下面小編就為大家?guī)硪黄獪\談React 屬性和狀態(tài)的一些總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • React實(shí)現(xiàn)翻頁(yè)時(shí)鐘的代碼示例

    React實(shí)現(xiàn)翻頁(yè)時(shí)鐘的代碼示例

    本文給大家介紹了React實(shí)現(xiàn)翻頁(yè)時(shí)鐘的代碼示例,翻頁(yè)時(shí)鐘把數(shù)字分為上下兩部分,翻頁(yè)效果的實(shí)現(xiàn)需要通過設(shè)置 position 把所有的數(shù)組放在同一個(gè)位置疊加起來,文中有詳細(xì)的代碼講解,需要的朋友可以參考下
    2023-08-08
  • ReactDOM 隱藏特性詳解

    ReactDOM 隱藏特性詳解

    這篇文章主要為大家介紹了ReactDOM 隱藏特性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 詳解React開發(fā)中使用require.ensure()按需加載ES6組件

    詳解React開發(fā)中使用require.ensure()按需加載ES6組件

    本篇文章主要介紹了詳解React開發(fā)中使用require.ensure()按需加載ES6組件,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • React組件傳參方式你了解嗎

    React組件傳參方式你了解嗎

    眾所周知?,在業(yè)務(wù)開發(fā)中,無論用的什么框架,首先要熟悉項(xiàng)目搭建,路由配置和組件通信,所以我們今天要探究的就是React中組件通信的幾種方式,快跟隨小編一起學(xué)習(xí)起來吧
    2024-03-03
  • webpack+react+antd腳手架優(yōu)化的方法

    webpack+react+antd腳手架優(yōu)化的方法

    本篇文章主要介紹了webpack+react+antd腳手架優(yōu)化的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04

最新評(píng)論