關於vue keep-alive配合swiper的問題


問題描述,首頁優化使用keep-alive之后,從別的頁面跳回來,swiper輪播不播放,查了好久資料,有的說要重新調用swiper的init方法進行初始化,等等,最終都沒能解決問題,最終通過查看文檔得知keep-alive緩存組件的是created鈎子會創建一個cache對象,用來作為緩存容器,保存vnode節點。destroyed鈎子則在組件被銷毀的時候清除cache緩存中的所有組件實例。

由此猜想,從其他頁面跳回來時,顯示的頁面可能只是vnode節點,還有渲染出html標簽就執行了new了swiper實例,導致swiper的實例無法掛在到實際的html元素上,所以出現輪播無法播放的問題。

解決方法:

  keep-aive組件支持兩個鈎子,activated鈎子在keep-alive組件中代替了created鈎子每次初始化時調用activated,deactivated為銷毀時的鈎子,所以可以申明一個狀態,讓keep-alive組件渲染成html元素后再實例化swiper,就可以解決這個bug。

開始上截圖!!

html代碼:

  

js代碼:

  

  

 

此方法只是解決了個人需求,記錄下來主要是為了提升記憶,如果可以幫助到別人最好,如果幫助不到,請勿噴!!!


免責聲明!

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



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