欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

antdv的table因數(shù)據(jù)量過大導致的卡頓問題及解決

 更新時間:2023年11月17日 08:56:37   作者:苑某某  
這篇文章主要介紹了antdv的table因數(shù)據(jù)量過大導致的卡頓問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

遇到的問題

antdv的table表格使用時因數(shù)據(jù)量過大,造成標簽頁切換卡頓的問題

解決辦法

綁定滾動事件,頁面只顯示在可視區(qū)域內(nèi)的數(shù)據(jù),沒在可視區(qū)域內(nèi)的數(shù)據(jù)不予展示,dom元素的scrollHeight和offsetHeight和scrollTop三個值的比較,判斷是否滑到底部了或者頂部了,滑到底部或頂部之后,用scrollTo函數(shù)改變滾動條的位置,使其可以再次觸發(fā)滑到頂部或底部,用計數(shù)count,下滾一下count++,上滾一下count–,用count來從原數(shù)據(jù)里slice哪20條數(shù)據(jù)展示

上代碼

mounted () {
document.querySelector('#test table').addEventListener('scroll', this.handleScroll) // 給dom元素綁定scroll事件,可以在mounted的時候就給他綁定
},
methods: {
    handleScroll (e) {
      this.scrollTop = e.target.scrollTop
      this.offsetHeight = e.target.offsetHeight
      this.scrollHeight = e.target.scrollHeight
      // 不足20條數(shù)據(jù),就都展示了就好
      if (this.data.length < 20) {
        this.dataScroll= this.data
        // 滑到頂部也是給個提示
        if (this.scrollTop === 0) {
          this.$message.warn('您已經(jīng)滑到頂部了')
        }
        // 滑到底部還是給個提示
        if ((this.scrollTop + this.offsetHeight) >= this.scrollHeight) {
          this.$message.warn('沒有更多數(shù)據(jù)了')
        }
        return
      }
       // 滑到頂部scrollTop為0
      if (this.scrollTop === 0) {
        this.selectedRowKeys = []
        // 計數(shù)變?yōu)?,即如果是1就代表滑到頂部了,取0-20條數(shù)的告警在可視區(qū)域
        let scrollCountTop = this.scrollCount
        if (this.scrollCount <= 0) {
          this.scrollCount = 1
        }
        if (this.scrollCount === 1) {
          this.datascroll= this.data.slice(0, this.numberMaxOverView)  // this.numberMaxOverView是要在這一頁展示的數(shù)據(jù)條數(shù)
          this.$message.warn('您已經(jīng)滑到頂部了')
        } else {
          // 如果不是在頂部,根據(jù)計數(shù)計算展示哪20條數(shù)據(jù),同時上滑要將計數(shù)減一,將滑條改變位置為了觸發(fā)下一次到頂部的計算
          document.querySelector('#test .test').scrollTo(0, 10)
          this.datascroll= this.data.slice(((this.numberMaxOverView * (scrollCountTop - 1) - this.cacheNum)), (this.numberMaxOverView * scrollCountTop))
          this.scrollCount--
        }
      }
            // 滑到底部
      if ((this.scrollTop + this.offsetHeight) >= this.scrollHeight) {
        this.selectedRowKeys = []
        // 如果是最后一次數(shù)據(jù)展示,計算需要展示的條數(shù)
        let scrollCount = this.scrollCount
        let isLastPage = this.numberMaxOverView - (this.data.length - this.scrollCount * (this.datascroll.length - this.cacheNum))
        let lastNum = this.scrollCount * (this.data.length - this.cacheNum) - isLastPage
        if (isLastPage >= 0) {
          this.datascroll= this.data.slice(lastNum - this.cacheNum, this.data.length)
          this.$message.warn('沒有更多數(shù)據(jù)了')
        } else {
          // 如果不是最后一次,根據(jù)計數(shù)計算展示哪20條數(shù)據(jù),同時下滑要將計數(shù)加一,將滑條改變位置為了觸發(fā)下一次底部計算
          document.querySelector('#test.demo').scrollTo(0, 100)
          // 如果是第一次下滑計算緩存不能再是觸頂?shù)?,可以是計算緩存往上10條
          if ((this.numberMaxOverView * scrollCount - this.cacheNum) < 0) {
            this.datascroll= this.data.slice((this.numberMaxOverView - this.cacheNum), (this.numberMaxOverView * 2))
            this.scrollCount++
          } else {
            this.datascroll= this.data.slice((this.numberMaxOverView * scrollCount - this.cacheNum), (this.numberMaxOverView * (scrollCount + 1)))
            this.scrollCount++
          }
        }
      }
}

注意

addeventlistener沒辦法綁定上handlescroll事件,

原因目前碰到的有二:

  • 一是你queryselector的時候沒找到元素,如果是組件的話去控制臺看一下元素的class有沒有綁正確,再不然就給個你要綁定的id,在它下邊找一找,總之你的dom要綁對;
  • 二是你用的組件是否需要給定scrollxy的屬性才能綁定scroll事件

可以參考antdv它的list滾動無限加載的思想,如果無需其他操作只是一個list的話也可以用虛擬滾動的組件實現(xiàn)vue-virtual-scroller

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue實現(xiàn)調(diào)用PC端攝像頭實時拍照

    Vue實現(xiàn)調(diào)用PC端攝像頭實時拍照

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)調(diào)用PC端攝像頭實時拍照,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • el-select下拉選擇緩存的實現(xiàn)

    el-select下拉選擇緩存的實現(xiàn)

    本文主要介紹了在使用el-select實現(xiàn)下拉選擇緩存時遇到的問題及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • vue/react項目刷新頁面出現(xiàn)404報錯的原因及解決辦法

    vue/react項目刷新頁面出現(xiàn)404報錯的原因及解決辦法

    Vue項目打包部署到線上后,刷新頁面會提示404,下面這篇文章主要給大家介紹了關(guān)于vue/react項目刷新頁面出現(xiàn)404報錯的原因及解決辦法,文中將解決的辦法介紹的很詳細,需要的朋友可以參考下
    2023-05-05
  • vue watch監(jiān)聽取不到this指向的數(shù)問題

    vue watch監(jiān)聽取不到this指向的數(shù)問題

    這篇文章主要介紹了vue watch監(jiān)聽取不到this指向的數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Vue router動態(tài)路由實現(xiàn)過程

    Vue router動態(tài)路由實現(xiàn)過程

    Vue動態(tài)路由(約定路由),聽起來好像很玄乎的樣子,但是你要是理解了實現(xiàn)思路,你會發(fā)現(xiàn)沒有想象中的那么難,下面這篇文章主要給大家介紹了關(guān)于vue實現(xiàn)動態(tài)路由添加功能的簡單方法,需要的朋友可以參考下
    2023-03-03
  • 解決Can''t find variable: SockJS vue項目的問題

    解決Can''t find variable: SockJS vue項目的問題

    這篇文章主要介紹了解決Can't find variable: SockJS vue項目的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue-print-nb解決vue打印問題,并且隱藏頁眉頁腳方式

    vue-print-nb解決vue打印問題,并且隱藏頁眉頁腳方式

    這篇文章主要介紹了vue-print-nb解決vue打印問題,并且隱藏頁眉頁腳方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue3使用Vite打包組件庫從0搭建過程詳解

    vue3使用Vite打包組件庫從0搭建過程詳解

    這篇文章主要為大家介紹了vue3使用Vite打包組件庫從0搭建過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 詳解Vue中router-view組件的使用

    詳解Vue中router-view組件的使用

    router-view組件作為vue最核心的路由管理組件,在項目中作為路由管理經(jīng)常被使用到,所以下面小編就來和大家詳細聊聊router-view組件的具體使用方法,希望對大家有所幫助
    2023-06-06
  • vue移動端自適應(yīng)適配問題詳解

    vue移動端自適應(yīng)適配問題詳解

    這篇文章主要介紹了vue移動端自適應(yīng)適配問題,本文通過實例代碼詳解給大家介紹的非常詳細,需要的朋友可以參考下
    2021-04-04

最新評論