您好,登錄后才能下訂單哦!
提出問題
最近在做項目發現一個問題,當我使用了 keep-alive 標簽后,進入了某個路由進行一系列操作,再點擊瀏覽器后退,再次進入剛才的路由,頁面被操作的數據沒有初始化!
分析問題
這是因為 keep-alive 將路由頁面緩存,所以該路由沒有完成整個生命周期,沒有 destroyed,因此重新進入也沒有觸發其他生命周期鉤子,如 created 等。
解決問題
(1). 查看官方文檔
當組件在 keep-alive 內被切換,它的 activated 和 deactivated 這兩個生命周期鉤子函數將會被對應執行。
include - 字符串或正則表達式。只有匹配的組件會被緩存。
exclude - 字符串或正則表達式。任何匹配的組件都不會被緩存。
<!-- 逗號分隔字符串 --> <keep-alive include="a,b"> <component :is="view"></component> </keep-alive> <!-- 正則表達式 (使用 `v-bind`) --> <keep-alive :include="/a|b/"> <component :is="view"></component> </keep-alive> <!-- 數組 (使用 `v-bind`) --> <keep-alive :include="['a', 'b']"> <component :is="view"></component> </keep-alive>
匹配首先檢查組件自身的 name 選項,如果 name 選項不可用,則匹配它的局部注冊名稱 (父組件 components 選項的鍵值)。匿名組件不能被匹配。
(2). 監聽路由變化
使用 watch 監聽路由變化,但是我發現監聽路由只有在組件被 keep-alive 包裹時才生效,未包裹時不生效,原因不明,理解的小伙伴請留言告訴我!
watch: { '$route' (to, from) { // 對路由變化作出響應... } }
beforeRouteUpdate 這個鉤子目前我發現還不能用,不知道哪里出錯。
beforeRouteUpdate (to, from, next) { // react to route changes... // don't forget to call next() }
以上這篇vue 使某個組件不被 keep-alive 緩存的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。