antd upload上傳組件如何獲取服務(wù)端返回數(shù)據(jù)
antd upload上傳組件獲取服務(wù)端返回數(shù)據(jù)
項目中使用到antd upload組件上傳的問題,按照官網(wǎng)示例,獲取不到返回的值,后面上去GitHub找了找解決辦法,
在upload返回值中,文件會有一個狀態(tài):status為done或者error的時候會返回一個response字段,這個字段里面會包含接口返回的數(shù)據(jù),因此只需要坐下過濾就可以拿到值了
我是這樣解決的
上面的判斷可以過濾掉,哪個是判斷多張上傳出錯的時候 給一個提示,因為antd upload組件多張上傳 會走多次beforeupload方法,會提示多次。
回歸正題,這樣判斷之后就可以拿到對應(yīng)的數(shù)據(jù),數(shù)據(jù)的處理就看自己的了,但是需要注意的就是如果是自己自定義的數(shù)據(jù),數(shù)據(jù)中必須要有uid字段,不然會報錯。
還有就是上傳的時候會多次走upload方法,每一次都需要給你的filelist賦值,不然后續(xù)的upload方法就不會走,也就不會調(diào)取接口了.
antd的upload上傳組件uploading狀態(tài)踩坑記
說明
在使用Antd 的 Upload 組件 的onChange()方法中,打印fileList 中的文件狀態(tài)status 一直是 uploading,無法拿到上傳文件后服務(wù)端響應(yīng)的內(nèi)容,且組件下方不顯示文件列表問題
以下是解決方法:
const Dragger = Upload.Dragger; constructor(props) { super(props); this.state = { fileList: [], }; } <Dragger listType={"picture"} action={uploadUrl} accept={acceptPictype} disabled={upLoadDisabled} beforeUpload={() => { }} fileList={isScanSuccess?[]:this.state.fileList} onChange={ (data) => { console.log(data) const { fileList, file } = data; //自己的邏輯 this.setState({ fileList: [...fileList] });//這段代碼放在處理邏輯的最后面 } } } > 在github[解答](https://github.com/ant-design/ant-design/issues/2423)上此問題解答: 對于受控模式,你應(yīng)該在 onChange 中始終 setState fileList,保證所有狀態(tài)同步到 Upload 內(nèi)。類似這里的寫法:http://ant.design/components/upload/#components-upload-demo-fileList // good 正確寫法 onFileChange(fileList) { if ( ... ) { ... } else { ... } // always setState this.setState({ fileList: [...fileList] }); } <Upload fileList={this.state.fileList} onChange={this.onFileChange} /> // bad 寫法 onFileChange(fileList) { if ( ... ) { this.setState({ fileList: [...fileList] }); } else { ... } } <Upload fileList={this.state.fileList} onChange={this.onFileChange} /> 建議研習(xí)受控組件概念:https://facebook.github.io/react/docs/forms.html#controlled-components 注意需要克隆 fileList 以保障 Upload 能感知數(shù)組變化。 - this.setState({ fileList }); + this.setState({ fileList: [...fileList] });
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue數(shù)組響應(yīng)式操作及高階函數(shù)使用代碼詳解
這篇文章主要介紹了Vue數(shù)組響應(yīng)式操作及高階函數(shù)使用代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08vue.js源代碼core scedule.js學(xué)習(xí)筆記
這篇文章主要為大家詳細(xì)介紹了vue.js源代碼core scedule.js的學(xué)習(xí)筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07vue-cli的index.html中使用環(huán)境變量方式
這篇文章主要介紹了vue-cli的index.html中使用環(huán)境變量方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10使用vue2實(shí)現(xiàn)帶地區(qū)編號和名稱的省市縣三級聯(lián)動效果
我們知道省市區(qū)縣都有名稱和對應(yīng)的數(shù)字唯一編號,使用編號可以更方便查詢以及程序處理,我們今天來了解一下使用vue2來實(shí)現(xiàn)常見的省市區(qū)下拉聯(lián)動選擇效果,需要的朋友可以參考下2018-11-11vue中el-table實(shí)現(xiàn)無限向下滾動懶加載數(shù)據(jù)
一次性的加載全部的數(shù)據(jù),并且將其渲染到頁面上,就會導(dǎo)致頁面卡頓,往往采用分頁和無限滾動的方式來展示,本文主要介紹了vue中el-table實(shí)現(xiàn)無限向下滾動懶加載數(shù)據(jù),感興趣的可以了解一下2023-12-12