vue使用keep-alive保持滾動條位置的實現(xiàn)方法
前言
下班前,20分鐘,發(fā)一篇。。。
簡單介紹,使用keep-alive的時候,返回前一頁,沒有保持滾動條位置。
事實上,就算不使用keep-alive,位置也沒有被記錄。
但是,在不適用keep-alive的時候,頁面內(nèi)容會刷新,所以就隨他去了……就是這么任性……
思路
官方有推薦一個scrollBehavior,鏈接,但是上面標注,只在history.pushState的瀏覽器生效,不知道是不是只能開啟history.pushState才可以使用,看了下實現(xiàn),挺不友好的,還是自己搞一個吧。。。
實現(xiàn)思路是這樣的,首先給路由增加一個對象meta:
meta: {
keepAlive: true,
scrollTop: 0,
}
keepAlive是否需要保持頁面,scrollTop記錄頁面的滾動位置。
然后在app.vue增加如下入口:
<keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"></router-view>
這樣就啟用keep-alive了。
然后在全局main.ts增加一個全局路由控制:
router.beforeEach((to: Route, from: Route, next: () => void) => {
if (from.meta.keepAlive) {
const $content = document.querySelector('#content');
const scrollTop = $content ? $content.scrollTop : 0;
from.meta.scrollTop = scrollTop;
}
next();
});
很簡單,離開的時候判斷當前頁是否需要保持頁面,如果需要,記錄頁面主容器content的滾動位置,寫入路由。
然后,每次進入保持好的頁面,讀取滾動條位置scrollTop,修改主容器的scrollTop,就搞定了:
public activated() {
const scrollTop = this.$route.meta.scrollTop;
const $content = document.querySelector('#content');
if (scrollTop && $content) {
$content.scrollTop = scrollTop;
}
}
看起來很簡單哦。
遺留問題
1、是不是每個頁面都可以記錄滾動條位置呢?
其實不是的,有的頁面,內(nèi)部有js交互,比如tab交互,不同的tab,頁面可滾動的高度不一致,如果不保持頁面狀態(tài)而統(tǒng)一記錄滾動位置,有可能導(dǎo)致滾動條的位置錯位。
2、能不能把activated這一步寫到全局的main.ts或者state去呢?
有想過這點,但是目前來說,沒找到實現(xiàn)的方法。
首先,如果通過router來控制,做不到,全局路由控制只能在頁面加載前監(jiān)聽,取不到載入頁的元素。
如果寫在一個通用的全局函數(shù)去控制,比如定義一個state,當頁面加載完的時候設(shè)置,那需要定義一個mixins來處理,但是對這個mixins不太熟悉,暫時還不知道該怎么做,可能有時間找個方法搞定它。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue項目在運行npm run build時卡住不動問題及解決方案
這篇文章主要介紹了vue項目在運行npm run build時卡住不動問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
解決Vue.js應(yīng)用回退或刷新界面時提示用戶保存修改問題
這篇文章主要介紹了Vue.js應(yīng)用回退或刷新界面時提示用戶保存修改問題,本文通過兩種手段防止運營編輯時丟失數(shù)據(jù),具體內(nèi)容詳情,感興趣的朋友跟隨小編一起看看吧2019-11-11
vue中提示$index is not defined錯誤的解決方式
這篇文章主要介紹了vue中提示$index is not defined錯誤的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
解讀element?el-upload上傳的附件名稱不顯示?file-list賦值
這篇文章主要介紹了解讀element?el-upload上傳的附件名稱不顯示?file-list賦值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
淺談Vue數(shù)據(jù)響應(yīng)思路之數(shù)組
這篇文章主要介紹了淺談Vue數(shù)據(jù)響應(yīng)思路之數(shù)組,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11

