vue3 + vue-router + keep-alive緩存頁面

1.vue-router中增加mate.keepAlive和deepth屬性

{path: '/',name: 'home',component: HomeView,meta: {//	當前頁面要不要緩存keepAlive: false,//	當前頁面層級deepth: 1,}},{path: '/list',name: 'list',component: ListView,meta: {//	當前頁面要不要緩存keepAlive: true,//	當前頁面層級deepth: 2,}},{path: '/info',name: 'info',component: InfoView,meta: {//	當前頁面要不要緩存keepAlive: false,//	當前頁面層級deepth: 3,}},

2.App.vue頁面template中增加keep-alive

<template><router-view v-slot="{ Component, route }"><keep-alive :include="include"><component :is="Component" v-if="route.meta.keepAlive" /></keep-alive><component :is="Component" v-if="!route.meta.keepAlive" /></router-view>
</template>

3.App.vue頁面js中增加邏輯

export default {setup() {const router = useRouter();//	用于記錄實際緩存頁面名稱const data = reactive({include: []});router.afterEach((to, from) => {//	把要緩存的頁面加入緩存列表//	如果 要 to(進入) 的頁面是需要 keepAlive 緩存的,把 name push 進 include數組if (to.meta.keepAlive) {!data.include.includes(to.name) && data.include.push(to.name);}//	解決從首頁進入列表頁面的時候,讀取的是緩存頁面,如://	第一次從首頁進入列表頁面,讀取新數據,緩存起來,然后,返回首頁//	第二次再進入列表頁面,讀取的是第一次進入的緩存,不更新。// 如果 要 form(離開) 的頁面是 keepAlive緩存的,// 再根據 deepth 來判斷是前進還是后退// 如果是后退,就把當前頁面從緩存列中刪除,if (from.meta.keepAlive && to.meta.deepth < from.meta.deepth) {var index = data.include.indexOf(from.name);index !== -1 && data.include.splice(index, 1);}})return { ...toRefs(data) }}
}

4.在緩存實際頁面增加name屬性和路由中name設置的相同

// List.vue
export default {name: 'list',		//	對應路由中name:'list'的值components: {},setup(){}
}

5.遇到的問題

1.一開始直接用meta.keepAlive的值判斷是否需要緩存,導致從列表進入詳情,再從詳情返回列表的時候是對的,再從列表返回首頁,再從首頁進入列表就讀取緩存不更新了。
2.使用keep-alive的include屬性解決1中的問題。但是明明細邏輯里已經把要緩存的name加入到緩存列表中了,就是不生效。
3.在要緩存的組件中,加入name屬性解決2中的問題。

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

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

相關文章

代碼規范之-理解ESLint、Prettier、EditorConfig

前言 團隊多人協同開發項目&#xff0c;困擾團隊管理的一個很大的問題就是&#xff1a;無可避免地會出現每個開發者編碼習慣不同、代碼風格迥異&#xff0c;為了代碼高可用、可維護性&#xff0c;需要從項目管理上盡量統一和規范代碼。理想的方式需要在項目工程化方面&#xff…

Kafka官方生產者和消費者腳本簡單使用

問題 怎樣使用Kafka官方生產者和消費者腳本進行消費生產和消費?這里假設已經下載了kafka官方文件,并已經解壓. 生產者配置文件 producer_hr.properties bootstrap.servers10.xx.xx.xxx:9092,10.xx.xx.xxx:9092,10.xx.xx.xxx:9092 compression.typenone security.protocolS…

部署jekins遇到的問題

jdk問題 我用的jdk版本是21的結果版本太新了&#xff0c;啟動jekins服務的時候總是報錯最后在jekins的安裝目錄下面的jekinsErr.log查看日志發現是jdk問題最后換了一個17版本的就解決了。 unity和jekins jekins和Git源碼管理 jekins和Git聯動使用 我想讓jekins每次打包的時…

【css/vue】使用css變量,在同一個頁面根據不同情況改變字號等樣式

解決方法是&#xff1a;將 css 的屬性使用 v-bind 與 Vue 組件的屬性綁定&#xff0c;當組件的屬性變化時&#xff0c;css 對應的屬性值也就會隨之變化&#xff1b; 具體實現代碼&#xff1a; <template><div><span class"navTitle">標題名</s…

3D電路板在線渲染案例

從概念上講,這是有道理的,因為PCB印制電路板上的走線從一個連接到下一個連接的路線基本上是平面的。 然而,我們生活在一個 3 維世界中,能夠以這種方式可視化電路以及相應的組件,對于設計過程很有幫助。本文將介紹KiCad中基本的3D查看功能,以及如何使用NSDT 3DConvert在線…

Day38力扣打卡

打卡記錄 網格中的最小路徑代價&#xff08;動態規劃&#xff09; 鏈接 class Solution:def minPathCost(self, grid: List[List[int]], moveCost: List[List[int]]) -> int:m, n len(grid), len(grid[0])f [[0x3f3f3f3f3f] * n for _ in range(m)]f[0] grid[0]for i i…

【洛谷 B2010】帶余除法 題解(順序結構+四則運算)

帶余除法 題目描述 給定被除數和除數&#xff0c;求整數商及余數。此題中請使用默認的整除和取余運算&#xff0c;無需對結果進行任何特殊處理。 輸入格式 一行&#xff0c;包含兩個整數&#xff0c;依次為被除數和除數&#xff08;除數非零&#xff09;&#xff0c;中間用…

Sentinel 授權規則 (AuthorityRule)

Sentinel 是面向分布式、多語言異構化服務架構的流量治理組件&#xff0c;主要以流量為切入點&#xff0c;從流量路由、流量控制、流量整形、熔斷降級、系統自適應過載保護、熱點流量防護等多個維度來幫助開發者保障微服務的穩定性。 SpringbootDubboNacos 集成 Sentinel&…

一分鐘快速了解Python3.12新特性

Python 3.12&#xff0c;作為Python編程語言的最新穩定版&#xff0c;引入了一系列對語言和標準庫的改變&#xff0c;發布于2023年10月2日。重點變化包括&#xff1a; 新語法特性: PEP 695 引入類型形參語法和 type 語句&#xff0c;允許創建更明確的泛型類和函數。PEP 701 改進…

Unity 三維場景的搭建 軟件構造實驗報告

實驗2&#xff1a;仿真系統功能實現 1.實驗目的 &#xff08;1&#xff09;熟悉在Unity中設置仿真場景&#xff1b; &#xff08;2&#xff09;熟悉在Unity中C#語言的使用&#xff1b; &#xff08;3&#xff09;熟悉仿真功能的實現。 2.實驗內容 新建一個仿真場景&#x…

SpringBoot_websocket實戰

SpringBoot_websocket實戰 前言1.websocket入門1.1 websocket最小化配置1.1.1 后端配置1.1.2 前端配置 1.2 websocket使用sockjs1.2.1 后端配置1.2.2 前端配置 1.3 websocket使用stomp協議1.3.1 后端配置1.3.2 前端配置 2.websocket進階2.1 websocket與stomp有什么區別2.2 webs…

思維模型 重疊效應

本系列文章 主要是 分享 思維模型 &#xff0c;涉及各個領域&#xff0c;重在提升認知。相似內容易被混淆或遺忘。 1 重疊效應的應用 1.1 重疊效應在教育中的應用 1 通過避免重疊效應提升學習效率 為了避免重疊效應&#xff0c;通過對比、歸納等方法來幫助學生更好地理解和掌…

黑馬React18: Redux

黑馬React: Redux Date: November 19, 2023 Sum: Redux基礎、Redux工具、調試、美團案例 Redux介紹 Redux 是React最常用的集中狀態管理工具&#xff0c;類似于Vue中的Pinia&#xff08;Vuex&#xff09;&#xff0c;可以獨立于框架運行 作用&#xff1a;通過集中管理的方式管…

VPS配置了swap沒發揮作用怎么辦

1 swap配置了但沒用上 我的服務器內存是2G&#xff0c;裝多一點東西就不夠用&#xff0c;于是我給他分配了2G的swap&#xff0c;等了幾小時&#xff0c;swap還是一點都沒有使用 Linux中Swap&#xff08;即&#xff1a;交換分區&#xff09;&#xff0c;類似于Windows的虛擬內存…

MongoDB的常用操作以及python連接MongoDB

一,MongoDB的啟動 mongod --dbpath..\data\db mongodb注意同時開兩個窗口&#xff0c;不要關&#xff01; 二, MongoDB的簡單使用 簡單介紹一下mongoDB中一些操作 show dbs: 顯示所有數據庫 show databases: 顯示所有數據庫 use xxxx: 使用指定數據庫/創建數據庫&#xff08…

Linux 與大型機 z/OS

大型機 國際商業機器公司&#xff08;International Business Machine Corporation&#xff09;&#xff0c;簡稱為 IBM&#xff0c;實際上是當今大型機的代名詞。作為大型企業技術解決方案提供商&#xff0c;IBM 在其漫長的生命周期中生產了各種產品。 他們的前身是計算、制表…

時序預測 | MATLAB實現基于BiLSTM-AdaBoost雙向長短期記憶網絡結合AdaBoost時間序列預測

時序預測 | MATLAB實現基于BiLSTM-AdaBoost雙向長短期記憶網絡結合AdaBoost時間序列預測 目錄 時序預測 | MATLAB實現基于BiLSTM-AdaBoost雙向長短期記憶網絡結合AdaBoost時間序列預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 1.Matlab實現BiLSTM-Adaboost…

【精選】Ajax技術知識點合集

Ajax技術詳解 Ajax簡介 Ajax 即“Asynchronous Javascript And XML”&#xff08;異步 JavaScript 和 XML&#xff09;&#xff0c;是指一種創建 交互式、快速動態應用的網頁開發技術&#xff0c;無需重新加載整個網頁的情況下&#xff0c;能夠更新頁面局 部數據的技術。通過在…

Scala如何寫一個通用的游戲數據爬蟲程序

以前想要獲取一些網站數據的時候&#xff0c;都是通過人工手動復制粘貼&#xff0c;這樣的效率及其低下。數據少無所謂&#xff0c;如果需要采集大量數據&#xff0c;手動就顯得乏力了。半夜睡不著&#xff0c;爬起來寫一段有關游戲商品數據的爬蟲通用模板&#xff0c;希望能幫…

專業pdf編輯工具PDF Expert mac中文版特點介紹

PDF Expert mac是一款專業的PDF編輯和閱讀工具。它可以幫助用戶在Mac、iPad和iPhone等設備上查看、注釋、編輯、填寫和簽署PDF文檔。 PDF Expert mac軟件特點 PDF編輯&#xff1a;PDF Expert提供了豐富的PDF編輯功能&#xff0c;包括添加、刪除、移動、旋轉、縮放、裁剪等操作…