亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

圖文詳解keep-alive如何清除緩存

 更新時(shí)間:2021年08月09日 15:56:29   作者:Try to do  
vue項(xiàng)目中常常會用到keepalive來作緩存,在應(yīng)付基本要求上能夠說很是方便,可是遇到同一個(gè)頁面,根據(jù)條件不一樣,分別緩存或者不緩存,就有些麻煩了,這篇文章主要給大家介紹了關(guān)于keep-alive如何清除緩存的相關(guān)資料,需要的朋友可以參考下

開篇場景

我的項(xiàng)目是前后端沒有分離的,技術(shù)棧是layui+vue+jq,vue是我后面引入的,為了能夠更好的組件化,將頁面組件化,減少代碼重復(fù)量,因?yàn)閖q的頁面需要經(jīng)常獲取dom 元素,導(dǎo)致頁面非常的冗余,jq 的頁面也不好做組件化,將頁面的功能抽離封裝,所以我引入了vue,最近需要是實(shí)現(xiàn)一個(gè)需求,就是多頁面緩存,通過點(diǎn)擊左邊的菜單欄,右邊展示頁面,但是需要將點(diǎn)擊過的頁面都進(jìn)行緩存,如下圖

這是我做的一個(gè)簡單的例子

使用v-for直接渲染

剛開始我的想法是設(shè)計(jì)一個(gè)數(shù)組,每次點(diǎn)擊的時(shí)候?qū)Ⅻc(diǎn)擊的組件push到一個(gè)數(shù)組,然后通過v-for用自定義組件進(jìn)行遍歷;

發(fā)現(xiàn)點(diǎn)擊的時(shí)候會把內(nèi)容都加進(jìn)去,這個(gè)時(shí)候就需要一個(gè)index,來顯示當(dāng)前的高亮,而且需求是每次只顯示一個(gè)頁面,這個(gè)時(shí)候就要通過index去隱藏其他的頁面。

v-for存在問題,刪除的時(shí)候會因?yàn)閿?shù)組改變重新渲染

此時(shí)可以看到實(shí)現(xiàn)了這個(gè)功能,但是每次點(diǎn)擊都添加很多相同的元素 這個(gè)時(shí)候我們就可以做去重的操作

通過去重簡單的實(shí)現(xiàn)了多頁面的功能

因?yàn)槲业墓δ苁切枰獙?shí)現(xiàn)多頁面緩存 就是要將這些頁面都緩存起來,所以我用了keep-alive這個(gè)組件,但是數(shù)組改變的時(shí)候,頁面會發(fā)生重新渲染

當(dāng)我操作了B 頁面 我把A 頁面關(guān)閉也就是刪除之后B 頁面就重新渲染了 這就達(dá)不到我要的緩存的效果。所以并不能直接使用v-for 直接進(jìn)行渲染

我后面想到自己實(shí)現(xiàn)個(gè)自定義指令,自己去判斷是否重新渲染, 但是自定義指令根本沒有this ,拿不到實(shí)例也就拿不到vnode 也就沒法自己實(shí)現(xiàn)緩存。

后面我想自己寫個(gè)組件用jsx 語法去渲染 自己判斷是否緩存,還是重新創(chuàng)建實(shí)例,但是 我拿到緩存渲染不上去。
之后我就想到了keep-alive這個(gè)組件,不循環(huán)直接渲染當(dāng)前高亮的那個(gè)頁面

直接用自定義組件渲染

這時(shí)候 可以實(shí)現(xiàn)緩存的功能了,自己實(shí)現(xiàn)一個(gè)keep-alive還是很麻煩的,自帶的這個(gè)keep-alive 還是很好用的,緩存還是很強(qiáng)的,

keep-alve 強(qiáng)大的緩存存在的問題

后面我發(fā)現(xiàn)了一個(gè)問題, 當(dāng)我在頁面做了操作,關(guān)閉了之后,在重新點(diǎn)開的時(shí)候,頁面還是有數(shù)據(jù),只能說keep-alive的緩存太厲害了,之后我就想怎么去清除這個(gè)緩存,官網(wǎng)有2個(gè)api,include跟exclude,include是包含那些組件的name 才會緩存,exclude剛好相反,是包含了那些就不緩存,但是我的頁面組件是之前就構(gòu)建好的,是個(gè)匿名的組件

我試過加name 并不能起到效果,我在度娘上查了下怎么清除緩存的,

參考文章:http://chabaoo.cn/article/219189.htm

我就想到了 我能不能刪除的時(shí)候也把它的緩存也清除了

找了好久還是讓我找到了cache

這個(gè)是我簡單寫的例子是在 $children[0].$options.parent.cache,在我真實(shí)的項(xiàng)目是_vnode.chindren.componentInstance里面的第一個(gè)元素里面

最關(guān)鍵是這個(gè)帶有keep-alive的 如果當(dāng)你找到這個(gè)東西 你就能找到cache了,我之前試過寫jsx,好像沒找到cache這個(gè)東西,估計(jì)是沒有keep-alive就沒有cache,自己實(shí)現(xiàn)一個(gè)keep-alive還是很難的。

找到cache 可以看到它里面的key名字跟我們組件的名字有關(guān)系,可以用indexOf 去匹配然后刪除cache

可以看到功能已經(jīng)實(shí)現(xiàn)了,這樣子就可以實(shí)現(xiàn)多頁面緩存了。

不得不說 vue還是很強(qiáng)大的 keep-alive 還是很厲害的

總結(jié)

到此這篇關(guān)于keep-alive如何清除緩存的文章就介紹到這了,更多相關(guān)keep-alive清除緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Vue.js創(chuàng)建一個(gè)時(shí)間跟蹤的單頁應(yīng)用

    使用Vue.js創(chuàng)建一個(gè)時(shí)間跟蹤的單頁應(yīng)用

    這篇文章主要介紹了使用Vue.js創(chuàng)建一個(gè)時(shí)間跟蹤的單頁應(yīng)用的相關(guān)資料,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Vue實(shí)現(xiàn)表格合并與拆分的示例代碼

    Vue實(shí)現(xiàn)表格合并與拆分的示例代碼

    在Vue應(yīng)用程序中,表格是一個(gè)非常常見的組件,在這篇文章中,我們將介紹如何在Vue中進(jìn)行表格的合并和拆分,感興趣的小伙伴可以了解一下
    2023-06-06
  • vue.js實(shí)現(xiàn)只能輸入數(shù)字的輸入框

    vue.js實(shí)現(xiàn)只能輸入數(shù)字的輸入框

    這篇文章主要為大家詳細(xì)介紹了vue.js實(shí)現(xiàn)只能輸入數(shù)字的輸入框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • vue-element-admin下載到登錄的一些坑

    vue-element-admin下載到登錄的一些坑

    本文主要介紹了vue-element-admin下載到登錄的一些坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • vue項(xiàng)目前端埋點(diǎn)的實(shí)現(xiàn)

    vue項(xiàng)目前端埋點(diǎn)的實(shí)現(xiàn)

    這篇文章主要介紹了vue項(xiàng)目前端埋點(diǎn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Vue項(xiàng)目如何實(shí)現(xiàn)切換主題色思路

    Vue項(xiàng)目如何實(shí)現(xiàn)切換主題色思路

    這篇文章主要介紹了Vue項(xiàng)目如何實(shí)現(xiàn)切換主題色思路,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 記一次用ts+vuecli4重構(gòu)項(xiàng)目的實(shí)現(xiàn)

    記一次用ts+vuecli4重構(gòu)項(xiàng)目的實(shí)現(xiàn)

    這篇文章主要介紹了記一次用ts+vuecli4重構(gòu)項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Vue3集成json-editor-vue3的代碼實(shí)現(xiàn)

    Vue3集成json-editor-vue3的代碼實(shí)現(xiàn)

    這篇文章主要介紹了Vue3集成json-editor-vue3的代碼實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • vue-cli4.x創(chuàng)建企業(yè)級項(xiàng)目的方法步驟

    vue-cli4.x創(chuàng)建企業(yè)級項(xiàng)目的方法步驟

    這篇文章主要介紹了vue-cli4.x創(chuàng)建企業(yè)級項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • vue 路由嵌套高亮問題的解決方法

    vue 路由嵌套高亮問題的解決方法

    這篇文章主要介紹了vue 路由嵌套高亮問題的解決方法,主路由通過v-for循環(huán)出來,次路由通過url拼接的方式導(dǎo)航到子路由頁面,具體實(shí)現(xiàn)代碼大家參考下本文
    2018-05-05

最新評論