Vue 使用 vue-router 時,多級嵌套路由緩存問題處理

Vue 使用 vue-router 時,多級嵌套路由緩存問題處理

對于三級菜單(或多級嵌套路由),vue 都是 通過 keep-alive 組件來實現路由組件的緩存。

有時候三級或者多級路由時,會出現失效情況。以下是三級菜單緩存的例子。

最后會有驚喜!

1.配置嵌套路由

在 vue-router 中,嵌套路由需要正確配置 children 屬性,并且每個路由組件都需要有唯一的 name,很重要。很重要。很重要。。

const routes = [{path: '/',component: Layout, // 布局組件children: [{path: '/menu1/path/',component: Menu1, // 一級菜單children: [{path: '/submenu1/path',component: SubMenu1, // 二級菜單children: [{path: 'item1',component: Item1, // 三級菜單name: 'Item1', // 確保每個組件有唯一的 namemeta: {noCache: false,   //自定義參數,是否緩存}},{path: 'item2',component: Item2,name: 'Item2',meta: {noCache: false,}},],},],},],},
];

2. 在嵌套路由中使用 router-view

在每一級菜單的組件中,都需要使用 router-view 來渲染子路由,記住是每一級

Menu1.vue

<template><div><h2>Menu 1</h2><keep-alive><router-view></router-view> <!-- 渲染二級菜單 --></keep-alive></div>
</template>

SubMenu1

<template><div><h3>SubMenu 1</h3><keep-alive><router-view></router-view> <!-- 渲染三級菜單 --></keep-alive></div>
</template>

3. 使用 keep-alive 緩存嵌套路由

在頂級組件(如 Layout.vue)中,用 包裹 ,確保所有嵌套路由組件都能被緩存。
如果只想緩存特定的嵌套路由組件,可以通過 includeexclude 屬性來實現。

Layout.vue

<template><div><nav><!-- 菜單導航 --><router-link to="/menu1/submenu1/item1">Item 1</router-link><router-link to="/menu1/submenu1/item2">Item 2</router-link></nav><!-- 使用 keep-alive 緩存所有嵌套路由 --><keep-alive :include="cachedViews"  :exclude="notCacheName"><router-view></router-view></keep-alive></div>
</template><script>
export default {name: "clientManager",computed: {cachedViews() {return [...this.$store.state.tagsView.cachedViews];},key() {return this.$route.path;},notCacheName() {return [this.$route.meta && this.$route.meta.noCache ? this.$route.name : "",];},},
};
</script>

此處有疑問點:

我查到的文檔,基本上都是說在 頂級組件 Layout.vue 里面配置 keep-alive即可,下級的不用配置。

但是經過我測試,發現每一級都要配置 keep-alive,請看第二步。不配置的話,緩存就是不起作用。不知道為啥?

我是配置了每一級的,然后就可以了。此次請大家幫我解一下疑惑,萬分感謝!

4. 最后的頁面

<template><div><h4>Item 1</h4><p>This is Item 1.</p></div>
</template><script>
export default {name: 'Item1',activated() {console.log('Item1 被激活');},deactivated() {console.log('Item1 被停用');},
};
</script>

菜單緩存失敗的原因

  • 路由配置不正確,導致組件被重復渲染。
  • 組件沒有唯一的 name。
  • 嵌套路由的 沒有正確渲染
  • 確認頁面的 name 是否和 路由配置定義頁面的 name 是否相同,不同肯定失敗

最易出錯的是最后一點,請仔細檢查。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72843.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72843.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72843.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QSplitter保存和讀取

官方文檔提供的方案 保存 connect(ui->splitter, &QSplitter::splitterMoved, [](){settings.setValue("splitterSizes", ui->splitter->saveState()); });讀取 ui->splitter->restoreState(settings.value("splitterSizes").toByteA…

VanillaVueSvelteReactSolidAngularPreact前端框架/庫的簡要介紹及其優勢

VanillaVueSvelteReactSolidAngularPreact前端框架/庫的簡要介紹及其優勢。以下是這些前端框架/庫的簡要介紹及其優勢&#xff1a; 1. Vanilla 定義&#xff1a;Vanilla 并不是一個框架&#xff0c;而是指 原生 JavaScript&#xff08;即不使用任何框架或庫&#xff09;。優勢…

Java多線程與高并發專題——關于CopyOnWrite 容器特點

引入 在 CopyOnWriteArrayList 出現之前&#xff0c;我們已經有了 ArrayList 和 LinkedList 作為 List 的數組和鏈表的實現&#xff0c;而且也有了線程安全的 Vector 和Collections.synchronizedList() 可以使用。 首先我們來看看Vector是如何實現線程安全的 &#xff0c;還是…

Jmeter接口測試詳解

今天筆者呢&#xff0c;想給大家聊聊Jmeter接口測試流程詳解&#xff0c;廢話不多說直接進入正題。 一、jmeter簡介 Jmeter是由Apache公司開發的java開源項目&#xff0c;所以想要使用它必須基于java環境才可以&#xff1b; Jmeter采用多線程&#xff0c;允許通過多個線程并…

DeepSeek開啟AI辦公新模式,WPS/Office集成DeepSeek-R1本地大模型!

從央視到地方媒體&#xff0c;已有多家媒體機構推出AI主播&#xff0c;最近杭州文化廣播電視集團的《杭州新聞聯播》節目&#xff0c;使用AI主持人進行新聞播報&#xff0c;且做到了0失誤率&#xff0c;可見AI正在逐漸取代部分行業和一些重復性的工作&#xff0c;這一現象引發很…

通過Golang的container/list實現LRU緩存算法

文章目錄 力扣&#xff1a;146. LRU 緩存主要結構 List 和 Element常用方法1. 初始化鏈表2. 插入元素3. 刪除元素4. 遍歷鏈表5. 獲取鏈表長度使用場景注意事項 源代碼閱讀 在 Go 語言中&#xff0c;container/list 包提供了一個雙向鏈表的實現。鏈表是一種常見的數據結構&#…

【大學生體質】智能 AI 旅游推薦平臺(Vue+SpringBoot3)-完整部署教程

智能 AI 旅游推薦平臺開源文檔 項目前端地址 ??項目介紹 智能 AI 旅游推薦平臺&#xff08;Intelligent AI Travel Recommendation Platform&#xff09;是一個利用 AI 模型和數據分析為用戶提供個性化旅游路線推薦、景點評分、旅游攻略分享等功能的綜合性系統。該系統融合…

【滲透測試】基于時間的盲注(Time-Based Blind SQL Injection)

發生ERROR日志告警 查看系統日志如下&#xff1a; java.lang.IllegalArgumentException: Illegal character in query at index 203: https://api.weixin.qq.com/sns/jscode2session?access_token90_Vap5zo5UTJS4jbuvneMkyS1LHwHAgrofaX8bnIfW8EHXA71IRZwsqzJam9bo1m3zRcSrb…

redis數據類型以及底層數據結構

redis數據類型以及底層數據結構 String&#xff1a;字符串類型&#xff0c;底層就是動態字符串&#xff0c;使用sds數據結構 Map:有兩種數據結構&#xff1a;1.壓縮列表&#xff1a;當hash結構中存儲的元素個數小于了512個。并且元 …

DeepSeek R1-32B醫療大模型的完整微調實戰分析(全碼版)

DeepSeek R1-32B微調實戰指南 ├── 1. 環境準備 │ ├── 1.1 硬件配置 │ │ ├─ 全參數微調:4*A100 80GB │ │ └─ LoRA微調:單卡24GB │ ├── 1.2 軟件依賴 │ │ ├─ PyTorch 2.1.2+CUDA │ │ └─ Unsloth/ColossalAI │ └── 1.3 模…

window下的docker內使用gpu

Windows 上使用 Docker GPU需要進行一系列的配置和步驟。這是因為 Docker 在 Windows 上的運行環境與 Linux 有所不同,需要借助 WSL 2(Windows Subsystem for Linux 2)和 NVIDIA Container Toolkit 來實現 GPU 的支持。以下是詳細的流程: 一、環境準備 1.系統要求 Window…

Ubuntu 下 nginx-1.24.0 源碼分析 - cycle->modules[i]->type

Nginx 中主要有以下幾種模塊類型 類型 含義 NGX_CORE_MODULE 核心模塊&#xff08;如進程管理、錯誤日志、配置解析&#xff09;。 NGX_EVENT_MODULE 事件模塊&#xff08;如 epoll、kqueue 等 IO 多路復用機制的實現&#xff09;。 NGX_HTTP_MODULE HTTP 模塊&#xf…

八、排序算法

一些簡單的排序算法 8.1 冒泡排序 void Bubble_sort(int a[] , int len){int i,j,flag,tmp;for(i=0 ; i < len-1 ; i++){flag = 1;for(j=0 ; j < len-1-i ; j++){if(a[j] > a[j+1]){tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;flag = 0;}}if(flag == 1){break;}}…

Sqlserver安全篇之_手工創建TLS用到的pfx證書文件

Sqlserver官方提供的Windows Powershell腳本 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 # Define parameters $certificateParams {Type "SSLServerAuthentication"Subje…

npm install -g @vue/cli 方式已經無法創建VUE3項目

采用該方式&#xff0c;啟動VUE3項目&#xff0c;運行命令&#xff0c;出現報錯&#xff1a; npm install -g vue/cli PS D:\> npm install -g vue/cli npm warn deprecated inflight1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lr…

3.8[a]cv

函數核心目標 實現屏幕空間內三角形的光柵化&#xff0c;將三角形覆蓋的像素點顏色填充到幀緩沖區&#xff0c;同時處理深度測試&#xff08;Z-Buffer&#xff09;。這是渲染管線中幾何階段到像素階段的關鍵步驟 包圍盒計算&#xff08;Bounding Box&#xff09;?** ?功能&…

導入 Excel 規則批量修改或刪除 Excel 表格內容

我們前面介紹過按照規則批量修改 Excel 文檔內容的操作&#xff0c;可以對大量的 Excel 文檔按照一定的規則進行統一的修改&#xff0c;可以很好的解決我們批量修改 Excel 文檔內容的需求。但是某些場景下&#xff0c;我們批量修改 Excel 文檔內容的場景比較復雜&#xff0c;比…

SGLang Router:基于緩存感知負載均衡的數據并行路由實踐

SGLang Router&#xff1a;基于緩存感知負載均衡的數據并行路由實踐 一、引言二、安裝與快速啟動三、兩種工作模式對比3.1 協同啟動模式&#xff08;單節點&#xff09;3.2 獨立啟動模式&#xff08;多節點&#xff09; 四、動態擴縮容API4.1 添加Worker節點4.2 移除Worker節點…

在人工智能軟件的幫助下學習編程實例

1 引言 本文記錄在人工智能軟件的幫助下學習一種全新的編程環境的實例&#xff0c;之所以提人工智能軟件而不是單指DeepSeek&#xff0c;一方面DeepSeek太火了&#xff0c;經常服務器繁忙&#xff0c;用本機本地部署的最多運行70b模型&#xff0c;又似乎稍差。另一方面也作為一…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_modules

定義在 objs\ngx_modules.c #include <ngx_config.h> #include <ngx_core.h>extern ngx_module_t ngx_core_module; extern ngx_module_t ngx_errlog_module; extern ngx_module_t ngx_conf_module; extern ngx_module_t ngx_openssl_module; extern ngx_modul…