91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

keep-alive怎么清除緩存

發布時間:2021-08-10 09:08:05 來源:億速云 閱讀:207 作者:小新 欄目:開發技術

小編給大家分享一下keep-alive怎么清除緩存,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

開篇場景

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

keep-alive怎么清除緩存

這是我做的一個簡單的例子

使用v-for直接渲染

剛開始我的想法是設計一個數組,每次點擊的時候將點擊的組件push到一個數組,然后通過v-for用自定義組件進行遍歷;

keep-alive怎么清除緩存

keep-alive怎么清除緩存

發現點擊的時候會把內容都加進去,這個時候就需要一個index,來顯示當前的高亮,而且需求是每次只顯示一個頁面,這個時候就要通過index去隱藏其他的頁面。

keep-alive怎么清除緩存

v-for存在問題,刪除的時候會因為數組改變重新渲染

keep-alive怎么清除緩存

此時可以看到實現了這個功能,但是每次點擊都添加很多相同的元素 這個時候我們就可以做去重的操作

通過去重簡單的實現了多頁面的功能

因為我的功能是需要實現多頁面緩存 就是要將這些頁面都緩存起來,所以我用了keep-alive這個組件,但是數組改變的時候,頁面會發生重新渲染

keep-alive怎么清除緩存

keep-alive怎么清除緩存

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

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

后面我想自己寫個組件用jsx 語法去渲染 自己判斷是否緩存,還是重新創建實例,但是 我拿到緩存渲染不上去。
之后我就想到了keep-alive這個組件,不循環直接渲染當前高亮的那個頁面

直接用自定義組件渲染

keep-alive怎么清除緩存

keep-alive怎么清除緩存

keep-alive怎么清除緩存

這時候 可以實現緩存的功能了,自己實現一個keep-alive還是很麻煩的,自帶的這個keep-alive 還是很好用的,緩存還是很強的,

keep-alve 強大的緩存存在的問題

后面我發現了一個問題, 當我在頁面做了操作,關閉了之后,在重新點開的時候,頁面還是有數據,只能說keep-alive的緩存太厲害了,之后我就想怎么去清除這個緩存,官網有2個api,include跟exclude,include是包含那些組件的name 才會緩存,exclude剛好相反,是包含了那些就不緩存,但是我的頁面組件是之前就構建好的,是個匿名的組件

keep-alive怎么清除緩存

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

keep-alive怎么清除緩存

參考文章:http://www.neiyidaogou.com/article/219189.htm

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

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

keep-alive怎么清除緩存

這個是我簡單寫的例子是在 $children[0].$options.parent.cache,在我真實的項目是_vnode.chindren.componentInstance里面的第一個元素里面

keep-alive怎么清除緩存

最關鍵是這個帶有keep-alive的 如果當你找到這個東西 你就能找到cache了,我之前試過寫jsx,好像沒找到cache這個東西,估計是沒有keep-alive就沒有cache,自己實現一個keep-alive還是很難的。

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

keep-alive怎么清除緩存

keep-alive怎么清除緩存

keep-alive怎么清除緩存

可以看到功能已經實現了,這樣子就可以實現多頁面緩存了。

不得不說 vue還是很強大的 keep-alive 還是很厲害的

以上是“keep-alive怎么清除緩存”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

萨嘎县| 上思县| 长武县| 二手房| 额尔古纳市| 精河县| 大庆市| 德州市| 娄烦县| 南靖县| 百色市| 元朗区| 台东县| 石楼县| 郎溪县| 秭归县| 梧州市| 怀柔区| 普兰店市| 凉城县| 大同县| 景洪市| 永宁县| 内江市| 京山县| 锡林郭勒盟| 平远县| 清新县| 根河市| 六盘水市| 济宁市| 东明县| 屯门区| 平度市| 观塘区| 内黄县| 肃北| 正镶白旗| 蒙自县| 昌吉市| 金秀|