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

溫馨提示×

溫馨提示×

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

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

Ant?Design_Form表單上傳文件組件如何實現

發布時間:2023-03-07 15:30:19 來源:億速云 閱讀:147 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Ant Design_Form表單上傳文件組件如何實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Ant Design_Form表單上傳文件組件如何實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

背景

需要實現的需求:在一個表單提交中,需要提交各種組件的提交信息,其中包括上傳文件;一般呢,我們會在選擇文件的時候將文件先傳到服務器,拿到文件的URL,在提交表單的時候傳的其實是文件的URL;

剛開始,對文件沒有必填的校驗,是比較簡單的;但是后來要求文件是必傳的,需要加上文件的校驗,就暴漏了一些小問題;

實現

首先,先對Upload組件加上必傳的校驗

rules={[{ required: true, message: "請上傳文件" }]},

直接添加required校驗,肯定是不行的,我們需要自定義文件的校驗;

dom結構大體是這樣:

<Item label="上傳文件" name="file" rules={[{ required: true, validator: checkFile }]}>
    <Upload {...uploadProps}>
            <div className="upload-content">
                    {imgUrl ? (
                            <div className="upload-cover">
                                    <img src={imgUrl} />
                            </div>
                    ) : (
                            <div className="upload-btn">{imgLoading ? <LoadingOutlined /> : <PlusOutlined />}</div>
                    )}
            </div>
    </Upload>
</Item>

校驗:

const checkFile = (rule: any, value: any) => {
    if (!value) {
            return Promise.reject("請上傳文件");
    }
    return Promise.resolve();
};

問題1:

warning.js:6 Warning: [antd: Upload] value is not a valid prop, do you mean fileList?

但是控制臺報錯:

warning.js:6 Warning: [antd: Upload] value is not a valid prop, do you mean fileList?

按照指示:在Item組件上加上:valuePropName="fileList",發現控制臺的報錯確實沒有了;

但是新的問題來了,當我們上傳文件的時候,畫面直接崩了!!

問題2:

Uncaught TypeError: (fileList || []).forEach is not a function

在Item組件上添加getValueFromEvent事件;

<Item
        label="上傳文件"
        name="file"
        valuePropName="fileList"
        rules={[{ required: true, validator: checkFile }]}
        getValueFromEvent={normFile}
>
const normFile = (e: any) => {
        if (Array.isArray(e)) {
                return e;
        }
        return e?.fileList;
};
tip1:注意一下新增和修改時校驗方法

這時候校驗是沒問題了,但是,如果你和我一樣,新增的提交和編輯的提交公用的時候,這一塊校驗還是會有問題;編輯內容的時候我們拿到的是文件的URL地址,不是文件對象,那么校驗就會一直過不去;

所以校驗方法就需要改一下,判斷條件也要加上URL,這一塊就不貼代碼了~

tip2: 注意一下beforeUpload的返回值

這里順道提一下,ant design 中如果不想走默認的上傳,就可以beforeUpload身上做文章了,但是一定要注意攔截默認上傳的條件是:

若返回 false 則停止上傳。支持返回一個 Promise 對象,Promise 對象 reject 時則停止上傳

因為我在這個方法開始的時候對文件的大小進行了限制,如果不滿足就終止,但是,習慣性的寫成了return;這時候并沒有阻止默認上傳的行為;需要改寫為return false。

讀到這里,這篇“Ant Design_Form表單上傳文件組件如何實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

陇西县| 马龙县| 眉山市| 沈阳市| 平武县| 承德市| 伊宁县| 阿克苏市| 日喀则市| 定陶县| 永吉县| 德保县| 黎城县| 乌鲁木齐市| 黑水县| 峨眉山市| 盱眙县| 扎囊县| 柏乡县| 琼结县| 庆城县| 灵川县| 镇坪县| 高雄县| 泰州市| 广昌县| 广饶县| 海门市| 德安县| 阳高县| 两当县| 乌拉特后旗| 宁武县| 卓尼县| 崇阳县| 新昌县| 隆德县| 珠海市| 句容市| 伊吾县| 永丰县|