五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Vue組件緩存之keep-alive正確使用姿勢

2023-08-03 09:33 作者:千鋒前端  | 我要投稿

先來看一個項目中的需求

作為苦逼的前端開發(fā)者,我們無時無刻都要面對產(chǎn)品經(jīng)理提的各種需求, 比如下圖這個場景

場景:

從首頁的點擊導(dǎo)航進(jìn)入列表頁,

列表頁點擊列表進(jìn)入 該 數(shù)據(jù)詳情頁

從詳情頁返回,希望列表頁緩存,不重新渲染數(shù)據(jù),這樣會提高用戶體驗。

分析一下

這樣需求,如果是小程序的話,默認(rèn)列表頁就會緩存,因為小程序的運行環(huán)境是微信客戶端,當(dāng)我們打開一個頁面會新建一個webview,

所有列表頁和詳情頁是兩個webview,當(dāng)我們進(jìn)入詳情頁,列表頁webview,只是會在詳情頁webview下面,不會銷毀。

以下是小程序運行環(huán)境:我們可以看到每個頁面都有一個webview

但是,我們的項目是用vue開發(fā)的webapp,多個組件共用一個窗口,當(dāng)我們切換路由時,切出路由組件會銷毀,所有列表頁進(jìn)入詳情頁列表頁會銷毀,重新回到列表頁,列表頁組件會重新加載。

解決方案

一、睡服提需求的人,改個簡單的需求

emm... ,看了看鏡子中的自己,估計這輩子沒辦法從臉上得到任何的便利了,老老實實換個方案吧。

那就是Keep-alive

keep-alive是Vue提供的一個抽象組件,主要用于保留組件狀態(tài)或避免重新渲染。

<keep-alive>?包裹動態(tài)組件時,會緩存不活動的組件實例,而不是銷毀他們。

<transition>?相似,?<keep-alive>?是一個抽象組件,它自身不會渲染一個DOM元素,也不會出現(xiàn)在父組件鏈中。

但是?keep-alive?會把其包裹的所有組件都緩存起來。

em...怎么辦呢,我們只是需要讓列表頁緩存啊.

分析一下

我們可以把需求拆分為2步

(1) 把需要緩存和不需要緩存的組件區(qū)分開,在組件的路由配置的元信息,meta中定義哪些需要緩存哪些不需要緩存

具體代碼如下

1,定義兩個出口?router-view

2,在router配置中定義哪些需要緩存哪些不需要緩存

開始按需緩存組件

我們從官方文檔提供的 api 入手,

keep-alive組件如果設(shè)置了 include ,就只有和 include 匹配的組件會被緩存,

所以思路就是,動態(tài)修改 include 數(shù)組來實現(xiàn)按需緩存。

此時我們發(fā)現(xiàn),從詳情頁返回列表頁,列表頁真的不再刷新了

em...新的問題又出現(xiàn)了,由于 列表頁被緩存了,這個時候我從首頁,再點擊進(jìn)入某個列表,也不刷新了,完了,點擊首頁導(dǎo)航應(yīng)該進(jìn)入不同的列表頁的. 也就是說,從首頁進(jìn)入列表組件不應(yīng)該被緩存的。

解決一下,我們在定義路由是,在元信息中再加一個字段,這里是deepth字段,代表進(jìn)入路由的層級,比如首頁路由deepth是0.5,列表頁是1,詳情頁是2

然后在 app.vue中增加監(jiān)聽器,監(jiān)聽 我們進(jìn)入路由的 方向

具體代碼如下

em...終于解決啦,完美!!!


Vue組件緩存之keep-alive正確使用姿勢的評論 (共 條)

分享到微博請遵守國家法律
宁强县| 扬州市| 东宁县| 庆安县| 海晏县| 乌兰县| 南宫市| 宣化县| 扎鲁特旗| 湘潭市| 沙洋县| 微山县| 花垣县| 信宜市| 仁怀市| 蓬溪县| 田阳县| 固阳县| 永年县| 泽库县| 绥棱县| 绵阳市| 仙桃市| 襄城县| 永康市| 文水县| 金塔县| 东莞市| 新昌县| 曲沃县| 红河县| 禹城市| 鄂伦春自治旗| 昌都县| 永兴县| 奉化市| 手游| 灵宝市| 文安县| 洞口县| 肥乡县|