亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

keep-alive路由多級嵌套不生效怎么辦

發布時間:2022-03-25 13:45:02 來源:億速云 閱讀:257 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關keep-alive路由多級嵌套不生效怎么辦,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

問題

發現了一個問題,多級嵌套的路由緩存頁面沒有生效。網上其實有一些是把路由拍平,然后再去處理菜單,但是我覺得還不如從根源上去解決這個問題。順帶了解一下keep-alive的工作原理。 實際就是根據組件的名稱,如果即將渲染的組件名稱命中存在緩存數組,那么直接取緩存里的組件進行渲染。同時,這個命中緩存是帶有父子組件關聯關系的

keep-alive路由多級嵌套不生效怎么辦

以下會根據本圖做講解

定位問題

keep-alive實際就是根據組件的名稱,如果即將渲染的組件名稱命中存在緩存數組,那么直接取緩存里的組件進行渲染。也就是我們一個頁面的渲染,是按一個一個組件來的,組件命中緩存則取緩存,如果沒有緩存,則下面的子組件不再進行緩存命中的判斷,從新渲染。

我們在路由上定義了name屬性,以name和組件名稱相對應的形式去判斷路由跳轉時當前組件是否銷毀。實際上keep-alive就是根據組件名稱去判斷是否保活的,所以之所以多級路由沒有生效的原因就顯而易見了,多級路由我們有一個中間組件去作為路由容器,然而這個路由容器組件我們沒有定義組件名,所以導致了沒有辦法緩存最后一層的組件。

keep-alive路由多級嵌套不生效怎么辦

也就是我們的layout還有wrapper/index.vue組件中沒有定義名稱,所以哪怕給keep-alive的include傳遞了Summary組件的名稱,但是由于父級并沒有找到,所以沒辦法在下次渲染時命中該組件的緩存。

解決方案

由問題定位可知,我們去一級一級添加組件名稱不就ok了嗎。 但是,就有一個問題出現了,layout還有wrapper/index.vue是多個組件復用的啊,這樣不就會導致我所有的頁面的中間組件都會被緩存起來了嗎。

所以,我們動態組件名不就o了嗎,所以我們就直接根據hash去取對應的路由值去賦值給組件名稱賦值

keep-alive路由多級嵌套不生效怎么辦

額外的問題及題解

我們存在tab-view組件,可以關閉緩存頁面,但是我們現在一個二級頁面緩存的是兩個組件,一個三級頁面緩存的是三個組件,而且相同父級的還共同依賴父級組件,也就是實際緩存summary和fabInventory兩個頁面時,是緩存了Inventory,InventoryManagement,summary和fabInventory四個組件,所以清除掉summary時,你還要考慮是否他有兄弟路由被緩存,如果存在則父級別緩存,這是個往上遞歸的判斷

keep-alive路由多級嵌套不生效怎么辦

關于“keep-alive路由多級嵌套不生效怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳信县| 新巴尔虎右旗| 石嘴山市| 临猗县| 延寿县| 嘉定区| 吉木萨尔县| 孝义市| 仲巴县| 泰顺县| 边坝县| 饶阳县| 土默特右旗| 聂荣县| 抚顺县| 滨海县| 昌邑市| 凤山市| 沈阳市| 东乌珠穆沁旗| 乌恰县| 应用必备| 龙井市| 齐齐哈尔市| 虎林市| 绩溪县| 开化县| 临安市| 谢通门县| 普宁市| 奉贤区| 盐城市| 盐池县| 福安市| 屯留县| 淮滨县| 鸡泽县| 饶平县| 泊头市| 芜湖市| 龙门县|