keep alive 實現後退不重新整理並保持滾動位置

2021-10-07 21:30:35 字數 1174 閱讀 8848

vue可以通過元素包裹元件,實現快取,下次使用時不需要重新建立該元件。但存在乙個問題:keep-alive包裹的元件中有滾動元素時,keep-alive不會儲存滾動位置。實現後退不重新整理主要依據keep-alive元件的activated和deactivated這兩個生命週期鉤子函式。

vue鉤子函式的執行順序:

不使用keep-alive

beforerouteenter --> created --> mounted --> destroyed
使用keep-alive

初次進入頁面,beforerouteenter --> created --> mounted --> activated --> deactivated

再次進入快取的頁面,只會觸發beforerouteenter -->activated --> deactivated。created和mounted不會再執行。

其中,activated在keep-alive元件啟用時呼叫.deactivated在keep-alive元件被停用時呼叫.

demo實現了後退不重新整理,並且返回時滾動到上次瀏覽的深度。

該demo中,包含三個鏈結導航。

home --> pagea --> pageb --> pagec
依次前進,每次前進到乙個新頁面都需要獲取資料,而按下後退鍵後,

從pagec返回到pageb,pageb不再獲取新資料,而是使用之前快取的資料。

從pageb返回到pagea時,pagea不再獲取新資料,而是使用之前的資料。並且當pagea存在滾動條時,返回時會滾動到上次瀏覽高度。

所以,pagea和pageb需要快取,pagec不需要快取。

import vue from 'vue';

import router from 'vue-router';

vue.use(router);

const router = new router(

},},},}

]});

export default router;

}div>

div>

div>

vue實現前進重新整理,後退不重新整理

專案中客戶提出返回列表頁需要快取之前查詢的資料,用到了以下方法解決了這個需求 實現思路 注 demo中,index頁面包含三個鏈結導航。page1 page2 page3.依次前進,每次前進到乙個新頁面都需要獲取資料,而按下後退鍵後,從page3返回到page2,page2不再獲取新資料,而是使用之...

keep alive不生效 keepalive詳解

一 簡介 二 vrrp協議 虛擬路由冗餘協議 vrrp是一種容錯協議,它通過把幾台路由裝置聯合組成一台虛擬的路由裝置,並通過一定的機制來保證當主機的下一跳裝置出現故障時,可以及時將業務切換到其它裝置,從而保持通訊的連續性和可靠性。vrrp將區域網內的一組路由器劃分在一起,稱為乙個備份組。備份組由乙個...

keep alive實現原理

二 keep alive介紹與應用 2.1 keep alive是什麼 keep alive是乙個抽象元件 它自身不會渲染乙個dom元素,也不會出現在父元件鏈中 使用keep alive包裹動態元件時,會快取不活動的元件例項,而不是銷毀它們。乙個場景 使用者在某個列表頁面選擇篩選條件過濾出乙份資料列...