antd-mobile走馬燈不輪播問題解決辦法

使用過antd的大佬們肯定都遇到過很多坑,今天來看一下Carousel走馬燈的坑。

問題:
如果是寫死的數(shù)據(jù),不存在bug。
如果是服務(wù)器請求的數(shù)據(jù)則無法觸發(fā)圖片自動輪播,必須手動滑動一張才有效果。

思路:
寫死的數(shù)據(jù)不存在異步?能直接拿到數(shù)據(jù)?
服務(wù)器請求的數(shù)據(jù)存在異步?DOM渲染之后發(fā)現(xiàn)數(shù)據(jù)length為0?系統(tǒng)判定沒有數(shù)據(jù)則不觸發(fā)輪播?

測試:
componentDidMount鉤子函數(shù)中打印請求到的數(shù)組,發(fā)現(xiàn)length為0,于是在componentDidUpdate鉤子函數(shù)中再去看一次發(fā)現(xiàn)length發(fā)生了變化。
利用這個length的變化我們可以通過調(diào)用setState,在初始時給定一個初始狀態(tài)homeFlag并改變它(看第三步)。

自動輪播效果實現(xiàn),bug解決。

代碼:
1、容器組件代碼(api是封裝的請求數(shù)據(jù)的方法)


111.png

2、UI組件代碼(父組件給子組件傳值)


222.png

3、走馬燈組件代碼(antn-mobile的carousel,關(guān)鍵點在componentDidUpdate鉤子函數(shù))
這里需要注意的是千萬要避免死循環(huán),因為你手動修改了state,就會再次觸發(fā)該階段鉤子函數(shù),所以必須給定一個合理的終止條件!


333.png

4、封裝的請求數(shù)據(jù)代碼


444.png

關(guān)鍵點還是看對生命周期鉤子函數(shù)的理解,覺得有用點贊!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級和職位的變化,入門級到專家級,廣度和深度都會有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,695評論 0 7
  • vue概述 在官方文檔中,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,627評論 0 25
  • 作為一個合格的開發(fā)者,不要只滿足于編寫了可以運行的代碼。而要了解代碼背后的工作原理;不要只滿足于自己的程序...
    六個周閱讀 8,687評論 1 33
  • 一:什么是閉包?閉包的用處? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。在本質(zhì)上,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 10,068評論 1 52
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,264評論 0 38

友情鏈接更多精彩內(nèi)容