vue中異步請求渲染問題(swiper不輪播)(在開發過程中遇到過什么問題、踩過的坑)


問題描述:

  用vue封裝一個swiper組件的時候,發現輪播圖不能輪播了。

原因:

  異步請求的時間遠大於生命周期執行的時間,mounted初始化DOM時數據未返回,渲染數據是空數組,導致輪播圖的容器層寬度為0,渲染輪播圖不能滾動。

解決思路:

  數據返回之后再做初始化操作。

解決方法:

  一、容器沒有寬度,就想着給容器設置一個寬度,但是一旦設置死數據了后期維護起來很麻煩。

  二、設置一個定時器,延長等待的時間,但是無法確定網絡請求的時間,這樣操作嚴么會等待時間過長,影響用戶體驗,要么是還沒有請求完就去獲取數據,這樣依然是不行。

  三、vue提供了一個全局API,Vue.$nextTick(),它的作用是獲取數據更新后最新的DOM結構。$nextTick()是同步的,但是里面的回調是異步的。底層是MutationObserver或setTimeout(fn,200)。

 

 

 

在react中map方法遍歷必須要加key值

setState是異步的:

  this.setState()會調用render方法,但並不會立即改變state的值。state是在render方法中賦值的,所以在this.setState()執行后立即獲取state值是不變的。直接修改state值並不會觸發更新,因為沒有觸發render函數。

  組件卸載之前,加在dom元素上的監聽事件和定時器必須要手動清除,它們不屬於react控制范圍內。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM