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

vue使用keep-alive保持滾動條位置的實現(xiàn)方法

 更新時間:2019年04月09日 09:46:53   作者:陳其文  
這篇文章主要介紹了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)一記錄滾動位置,有可能導致滾動條的位置錯位。

2、能不能把activated這一步寫到全局的main.ts或者state去呢?

有想過這點,但是目前來說,沒找到實現(xiàn)的方法。

首先,如果通過router來控制,做不到,全局路由控制只能在頁面加載前監(jiān)聽,取不到載入頁的元素。

如果寫在一個通用的全局函數(shù)去控制,比如定義一個state,當頁面加載完的時候設置,那需要定義一個mixins來處理,但是對這個mixins不太熟悉,暫時還不知道該怎么做,可能有時間找個方法搞定它。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 圖文講解用vue-cli腳手架創(chuàng)建vue項目步驟

    圖文講解用vue-cli腳手架創(chuàng)建vue項目步驟

    本次小編給大家?guī)淼氖顷P(guān)于用vue-cli腳手架創(chuàng)建vue項目步驟講解內(nèi)容,有需要的朋友們可以學習下。
    2019-02-02
  • Vue父組件如何獲取子組件中的變量

    Vue父組件如何獲取子組件中的變量

    這篇文章主要為大家詳細介紹了Vue父組件如何獲取子組件中的變量,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • mini-vue渲染的簡易實現(xiàn)

    mini-vue渲染的簡易實現(xiàn)

    本文主要介紹了mini-vue渲染的簡易實現(xiàn),主要簡單來實現(xiàn)一個虛擬dom渲染真實dom,以及更新的方法。具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue3中實現(xiàn)發(fā)送網(wǎng)絡請求功能(最新推薦)

    Vue3中實現(xiàn)發(fā)送網(wǎng)絡請求功能(最新推薦)

    Axios是一個基于Promise的HTTP客戶端,可以在瀏覽器和Node.js中用于發(fā)送HTTP請求,本文主要介紹在Vue3中實現(xiàn)發(fā)送網(wǎng)絡請求功能,感興趣的朋友一起看看吧
    2023-12-12
  • 詳解基于iview-ui的導航欄路徑(面包屑)配置

    詳解基于iview-ui的導航欄路徑(面包屑)配置

    這篇文章主要介紹了詳解基于iview-ui的導航欄路徑(面包屑)配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • vue3中使用swiper的完整版教程(超詳細!)

    vue3中使用swiper的完整版教程(超詳細!)

    工作中日常筆記,vue中使用swiper插件,在pc端和h5端也是常用的插件,下面這篇文章主要給大家介紹了關(guān)于vue3中使用swiper的完整版教程,需要的朋友可以參考下
    2023-04-04
  • Vue組件通信之父傳子與子傳父詳細講解

    Vue組件通信之父傳子與子傳父詳細講解

    這篇文章主要介紹了React中父子組件通信詳解,在父組件中,為子組件添加屬性數(shù)據(jù),即可實現(xiàn)父組件向子組件通信,文章通過圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-10-10
  • Vue開發(fā)工具之vuejs-devtools安裝教程及常見問題解決(最詳細)

    Vue開發(fā)工具之vuejs-devtools安裝教程及常見問題解決(最詳細)

    這篇文章主要介紹了Vue開發(fā)工具vuejs-devtools超級詳細安裝教程以及常見問題解決本篇文章是最詳細的vue開發(fā)工具vuejs-devtools安裝教程,需要的朋友可以參考下
    2022-11-11
  • ant design vue 表格table 默認勾選幾項的操作

    ant design vue 表格table 默認勾選幾項的操作

    這篇文章主要介紹了ant design vue 表格table 默認勾選幾項的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue項目中的組件傳值方式

    vue項目中的組件傳值方式

    這篇文章主要介紹了vue項目中的組件傳值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論