Vue3 對跳轉 同一路由傳入不同參數的頁面分別進行緩存

1:使用場景

? ? ?從列表頁跳轉至不同的詳情頁面,對這些詳情頁面分別進行緩存

2:核心代碼

2.1: 配置路由文件

在路由文件里對需要進行緩存的路由對象添加meta 屬性

?// 需要緩存的詳情頁面路由
? {
? ? name: detail,
? ? path: '/myRouter/detail', // 路徑
? ? component: () => import('../views/abc/detail.vue'),
? ? meta: {
? ? ? keepAlive: true, // 是否被緩存
? ? },
? },

2.2: app頁面增加緩存邏輯

<template>
? <el-config-provider :locale="locale">
? ? <!-- 有條件的進行緩存 -->
? ? <transition mode="out-in" name="fade">

? ? ? <router-view v-slot="{ Component }">
? ? ? ? <keep-alive :include="includeList">
? ? ? ? ? <component :is="wrap(route?.name , route.query, Component)" :key="route.fullPath" />
? ? ? ? </keep-alive>
? ? ? </router-view>
? ? </transition>
? </el-config-provider>
</template>

wrap 方法

    const wrapperMap = new Map();const wrap = (name:any, query:any, component:any) => {let wrapper;let wrapperName;if(query.catchName){wrapperName = name + '-' + query.catchName;}else {wrapperName  = name;}if (wrapperMap.has(wrapperName)) {wrapper = wrapperMap.get(wrapperName);} else {wrapper = {name: wrapperName,render() {return h('div', { className: 'vaf-page-wrapper' }, component);},};wrapperMap.set(wrapperName, wrapper);}return h(wrapper);};

watch 監聽對于route.query 是否存在catchName 參數的路由分別進行緩存

// 監聽路由,判斷頁面是否需要緩存watch(() => route,(newVal: any, oldVal) => {if (newVal.query?.catchName) {if (newVal.meta.keepAlive && !state.includeList.includes(newVal.name + '-' + newVal.query?.catchName)) {state.includeList.push(newVal.name + '-' + newVal.query?.catchName);}} else if (newVal.meta.keepAlive && !state.includeList.includes(newVal.name)) {state.includeList.push(newVal.name);}},{deep: true, // 開啟深度監聽},);

2.3: 在列表頁面的查看點擊方法中配置路由添加query 傳參 catchName

注:上面為核心代碼邏輯,需要根據實際情況進行調整。

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

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

相關文章

十大排序:插入/希爾/選擇/堆/冒泡/快速/歸并/計數/基數/桶排序 匯總(C語言)

目錄 前言非線性時間比較類插入排序(1) 直接插入排序(2) 希爾排序 選擇排序(3) 選擇排序優化版(4) 堆排序 交換排序(5) 冒泡排序(6) 快速排序hoare版本挖坑版前后指針版非遞歸版 歸并排序(7) 歸并排序遞歸版非遞歸版 線性時間比較類(8) 計數排序基數排序與桶排序 總結 前言 在計…

報文交換 和 電路交換對比說明

報文交換 和 電路交換 是兩種不同的網絡通信方式&#xff0c;它們在數據傳輸的方式、效率、成本和適用場景等方面有所不同。下面詳細對比這兩種交換方式&#xff0c;并舉例說明。 報文交換&#xff08;Message Switching&#xff09; 定義&#xff1a;報文交換是一種存儲-轉發…

昇思25天學習打卡營第13天|基于MindSpore通過GPT實現情感分類

基于MindSpore通過GPT實現情感分類 情感分類 情感分類是指在自然語言處理(NLP)領域中,通過分析文本內容所表達的情感傾向,將文本歸類為正面、負面或中性等類別的任務。 在情感分類中,基于不同的方法和技術,可以分為基于情感詞典的方法、基于傳統機器學習的方法和基于深…

c++筆試題

語言特性 題目1&#xff1a;請解釋C11中新引入的auto和decltype關鍵字&#xff0c;并給出使用示例。 題目2&#xff1a;什么是RAII&#xff08;Resource Acquisition Is Initialization&#xff09;&#xff1f;請解釋其原理并舉例說明。 題目3&#xff1a;C11引入了move se…

【unity實戰】使用舊輸入系統Input Manager 寫一個 2D 平臺游戲玩家控制器——包括移動、跳躍、滑墻、蹬墻跳

最終效果 文章目錄 最終效果素材下載人物環境 簡單繪制環境角色移動跳躍視差和攝像機跟隨效果奔跑動畫切換跳躍動畫&#xff0c;跳躍次數限制角色添加2d物理材質&#xff0c;防止角色粘在墻上如果角色移動時背景出現黑線條方法一方法二 墻壁滑行實現角色滑墻不可以通過移動離開…

Web貴州旅游攻略系統-計算機畢業設計源碼16663

目 錄 第 1 章 引 言 1.1 選題背景與意義 1.2 國內外研究現狀 1.3 論文結構安排 第 2 章 系統的需求分析 2.1 系統可行性分析 2.1.1 技術方面可行性分析 2.1.2 經濟方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系統功能需求分析 2.3 系…

前端面試題18(js字符串特定內容查找方法)

在JavaScript中&#xff0c;有多種方法可以用來查找字符串中的特定內容。以下是一些常用的方法&#xff0c;包括它們的用途和示例代碼&#xff1a; 1. indexOf() indexOf() 方法返回指定文本在字符串中第一次出現的索引&#xff08;位置&#xff09;&#xff0c;如果沒有找到…

初學者打字練習平臺推薦

大牛打字練習平臺 (ccfoj.com) 適合人群&#xff1a;c初學者&#xff0c;10~20歲不定&#xff0c;有效提高對代碼的熟悉程度&#xff0c;以及鍛煉打字速度。 TypingClub TypingClub是一個免費的在線打字練習平臺&#xff0c;提供各種打字練習內容&#xff0c;從基礎到高級。…

pulsar單節點能開啟事務嗎?是不是真的

Apache Pulsar 支持事務&#xff0c;但是需要在分布式模式下運行。單節點模式下不支持 Pulsar 事務。事務功能在 Pulsar 中依賴于分布式的 BookKeeper 存儲服務&#xff0c;以確保事務的持久性和可靠性。 具體來說&#xff1a; 分布式模式和事務支持&#xff1a; 在分布式部署…

MyBatis(26)MyBatis 有哪些方式可以實現多數據源管理

在企業級應用開發中&#xff0c;有時需要同時操作多個數據庫&#xff0c;這就涉及到多數據源管理的問題。MyBatis作為一個流行的持久層框架&#xff0c;本身并沒有直接提供多數據源管理的功能&#xff0c;但是可以通過與Spring等框架結合&#xff0c;或者通過自定義方式來實現多…

【vue組件庫搭建04】使用vitepress搭建站點并部署到github

前言 基于vitePress搭建文檔站點&#xff0c;使用github pages進行部署 安裝VitePress 1.Node.js 18 及以上版本 2.npm add -D vitepress 3.npx vitepress init 4.將需要回答幾個簡單的問題&#xff1a; ┌ Welcome to VitePress! │ ◇ Where should VitePress initi…

Cesium 二三維熱力圖

Cesium 二三維熱力圖 原理&#xff1a;主要依靠heatmap.js包來實現 效果圖&#xff1a;

elementPlus-vue3-ts表格單選和雙選實現方式

記錄在vue3、ts、element-plus環境下表格單選和多選的實現方式 單選 html部分 <el-table...reftaskTableRefselect"selectClick"... ><el-table-column type"selection" width"50" />... </el-table>ts部分 const taskTabl…

三相異步電動機的起動方法

1. 引言 2. 三相籠型異步電動機德起動方法 3. 三相繞線型異步電動機的起動方法 4. 軟起動器起動 5. 參考文獻 1 引言 三相異步電動機結構簡單﹑價格低廉﹑運行可靠﹑維護方便&#xff0c;在工農業生產中得到了廣泛應用。為使電動機能夠轉動起來&#xff0c;并很快達到工作轉…

內存拷貝函數對比測試

內存拷貝函數 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <errno.h> #include <xmmintrin.h> // SSE Intrinsics#define SIZE_1K 1024 #define SIZE_1M (1024 * 1024)void* aligned_malloc…

低代碼平臺在企業數字化轉型中的關鍵角色與應用

隨著數字化轉型的深入推進&#xff0c;企業越來越依賴于快速、靈活的軟件開發和部署方案。傳統的軟件開發往往需要大量的編碼工作和專業技能&#xff0c;而低代碼開發平臺則通過簡化開發流程、降低技術門檻&#xff0c;為企業提供了一種新的解決方案。本文將探討低代碼開發平臺…

從零開始使用WordPress搭建個人網站并一鍵發布公網詳細教程

文章目錄 前言1. 搭建網站&#xff1a;安裝WordPress2. 搭建網站&#xff1a;創建WordPress數據庫3. 搭建網站&#xff1a;安裝相對URL插件4. 搭建網站&#xff1a;內網穿透發布網站4.1 命令行方式&#xff1a;4.2. 配置wordpress公網地址 5. 固定WordPress公網地址5.1. 固定地…

ChatGPT:為什么很多算法經過二分思想的優化就變成了logn

ChatGPT&#xff1a;為什么很多算法經過二分思想的優化就變成了logn 很多算法在經過二分思想優化后&#xff0c;時間復雜度變成 O(log?n)&#xff0c;這主要是因為二分思想能夠顯著減少問題的規模。具體來說&#xff0c;二分思想通常應用于那些問題規模可以通過每一步驟減半的…

【LabVIEW學習篇 - 2】:LabVIEW的編程特點

文章目錄 LabVIEW的編程特點圖形編程天然并行運行基于數據流運行 LabVIEW的編程特點 圖形編程 LabVIEW使用圖形化的圖形化編程語言&#xff08;G語言&#xff09;&#xff0c;用戶通過在程序框圖中拖放和連接各種節點&#xff08;Nodes&#xff09;來編寫程序。每個節點代表一…

什么是跨域?——詳解跨域問題及其解決方案

目錄 引言什么是跨域同源策略跨域的產生原因跨域的常見解決方案 JSONPCORS代理服務器nginx反向代理后端設置允許跨域 CORS的詳細實現 瀏覽器中的CORS支持服務器端的CORS配置 常見的跨域場景和解決方案 跨域請求API跨域加載資源 跨域的安全性考慮跨域調試技巧總結 引言 在現代…