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