vue中destroyed不生效的原因


最近,在開發過程中遇到一個問題,使用手機再帶的返回鍵返回上一層菜單時,發現一跳轉到首頁就提示是否退出應用;這讓我覺得很困惑,因為使用的開發模板跟之前的一樣,為啥之前就沒有出現呢?這激起了我的好奇心,我必須要找出問題所在即可!經過各種調試,最終返現了問題所在!

 

 如上圖所示,我們在頁面入口處,路由展示的地方使用了vue中的內置組件--keep-alive包裹,keep-alive具有緩存的作用,在組件切換過程中將狀態保留在內存中,防止重復渲染DOM,減少加載時間及性能消耗,提高用戶體驗性

 

 也因此導致了我在動態組件中使用的時候,destroyed方法沒有生效;

------------------------------------------------------------------------------------------------

對於keep-alive官方文檔中的解釋是:

定義:

<keep-alive> 包裹動態組件時,會緩存不活動的組件實例,而不是銷毀它們。和 <transition> 相似,<keep-alive> 是一個抽象組件:它自身不會渲染一個 DOM 元素,也不會出現在組件的父組件鏈中。

props:

  • include - 字符串或正則表達式。只有名稱匹配的組件會被緩存。
  • exclude - 字符串或正則表達式。任何名稱匹配的組件都不會被緩存。
  • max - 數字。最多可以緩存多少組件實例。   

注意,<keep-alive> 是用在其一個直屬的子組件被開關的情形。如果你在其中有 v-for 則不會工作。如果有上述的多個條件性的子元素,<keep-alive> 要求同時只有一個子元素被渲染。

看到這里,之前的疑惑就全部可解了;

附上官方鏈接地址文檔:https://cn.vuejs.org/v2/api/#keep-alive


免責聲明!

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



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