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

Ant?Design_Form表單上傳文件組件實(shí)現(xiàn)詳解

 更新時(shí)間:2023年03月07日 14:31:15   作者:coffee  
這篇文章主要為大家介紹了Ant?Design_Form表單上傳文件組件實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景

需要實(shí)現(xiàn)的需求:在一個(gè)表單提交中,需要提交各種組件的提交信息,其中包括上傳文件;一般呢,我們會(huì)在選擇文件的時(shí)候?qū)⑽募葌鞯椒?wù)器,拿到文件的URL,在提交表單的時(shí)候傳的其實(shí)是文件的URL;

剛開(kāi)始,對(duì)文件沒(méi)有必填的校驗(yàn),是比較簡(jiǎn)單的;但是后來(lái)要求文件是必傳的,需要加上文件的校驗(yàn),就暴漏了一些小問(wèn)題;

實(shí)現(xiàn)

首先,先對(duì)Upload組件加上必傳的校驗(yàn)

rules={[{ required: true, message: "請(qǐng)上傳文件" }]},

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

dom結(jié)構(gòu)大體是這樣:

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

校驗(yàn):

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

問(wèn)題1:

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

但是控制臺(tái)報(bào)錯(cuò):

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

按照指示:在Item組件上加上:valuePropName="fileList",發(fā)現(xiàn)控制臺(tái)的報(bào)錯(cuò)確實(shí)沒(méi)有了;

但是新的問(wèn)題來(lái)了,當(dāng)我們上傳文件的時(shí)候,畫面直接崩了??!

問(wèn)題2:

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

參照官網(wǎng):ant.design/components/…

在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:注意一下新增和修改時(shí)校驗(yàn)方法

這時(shí)候校驗(yàn)是沒(méi)問(wèn)題了,但是,如果你和我一樣,新增的提交和編輯的提交公用的時(shí)候,這一塊校驗(yàn)還是會(huì)有問(wèn)題;編輯內(nèi)容的時(shí)候我們拿到的是文件的URL地址,不是文件對(duì)象,那么校驗(yàn)就會(huì)一直過(guò)不去;

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

tip2: 注意一下beforeUpload的返回值

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

若返回 false 則停止上傳。支持返回一個(gè) Promise 對(duì)象,Promise 對(duì)象 reject 時(shí)則停止上傳

因?yàn)槲以谶@個(gè)方法開(kāi)始的時(shí)候?qū)ξ募拇笮∵M(jìn)行了限制,如果不滿足就終止,但是,習(xí)慣性的寫成了return;這時(shí)候并沒(méi)有阻止默認(rèn)上傳的行為;需要改寫為return false

以上就是Ant Design_Form表單上傳文件組件實(shí)現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于Ant Design_Form表單上傳文件組件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue插件及修改ip啟動(dòng)端口解析

    vue插件及修改ip啟動(dòng)端口解析

    這篇文章主要為大家介紹了vue插件及修改ip啟動(dòng)端口的解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Vue用v-for給循環(huán)標(biāo)簽自身屬性添加屬性值的方法

    Vue用v-for給循環(huán)標(biāo)簽自身屬性添加屬性值的方法

    這篇文章主要介紹了Vue用v-for給循環(huán)標(biāo)簽自身屬性添加屬性值的方法,文中大家給大家列舉了三種方法 ,需要的朋友可以參考下
    2018-10-10
  • Vue用v-for給src屬性賦值的方法

    Vue用v-for給src屬性賦值的方法

    下面小編就為大家分享一篇Vue用v-for給src屬性賦值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Vue全局共享數(shù)據(jù)之globalData,vuex,本地存儲(chǔ)的使用

    Vue全局共享數(shù)據(jù)之globalData,vuex,本地存儲(chǔ)的使用

    這篇文章主要介紹了Vue全局共享數(shù)據(jù)之globalData,vuex,本地存儲(chǔ)的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue通過(guò)style或者class改變樣式的實(shí)例代碼

    vue通過(guò)style或者class改變樣式的實(shí)例代碼

    這篇文章主要介紹了vue通過(guò)style或者class改變樣式的實(shí)例代碼,在文中給大家提到了vue的一些樣式(class/style)綁定,需要的朋友可以參考下
    2018-10-10
  • 如何查看vue-cli版本的兩個(gè)命令

    如何查看vue-cli版本的兩個(gè)命令

    這篇文章主要介紹了如何查看vue-cli版本的兩個(gè)命令問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Vue生命周期詳解

    Vue生命周期詳解

    這篇文章詳細(xì)介紹了Vue的生命周期,文中通過(guò)代碼示例介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Vue源碼解析之Template轉(zhuǎn)化為AST的實(shí)現(xiàn)方法

    Vue源碼解析之Template轉(zhuǎn)化為AST的實(shí)現(xiàn)方法

    這篇文章主要介紹了Vue源碼解析之Template轉(zhuǎn)化為AST的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Vue的子父組件傳值之小白必看篇

    Vue的子父組件傳值之小白必看篇

    這篇文章主要介紹了Vue的子父組件傳值之小白必看篇,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue中實(shí)現(xiàn)移動(dòng)端的scroll滾動(dòng)方法

    vue中實(shí)現(xiàn)移動(dòng)端的scroll滾動(dòng)方法

    下面小編就為大家分享一篇vue中實(shí)現(xiàn)移動(dòng)端的scroll滾動(dòng)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03

最新評(píng)論