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

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

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

遇到的問題

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

解決辦法

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

上代碼

mounted () {
document.querySelector('#test table').addEventListener('scroll', this.handleScroll) // 給dom元素綁定scroll事件,可以在mounted的時(shí)候就給他綁定
},
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
        // 滑到頂部也是給個(gè)提示
        if (this.scrollTop === 0) {
          this.$message.warn('您已經(jīng)滑到頂部了')
        }
        // 滑到底部還是給個(gè)提示
        if ((this.scrollTop + this.offsetHeight) >= this.scrollHeight) {
          this.$message.warn('沒有更多數(shù)據(jù)了')
        }
        return
      }
       // 滑到頂部scrollTop為0
      if (this.scrollTop === 0) {
        this.selectedRowKeys = []
        // 計(jì)數(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ù)計(jì)數(shù)計(jì)算展示哪20條數(shù)據(jù),同時(shí)上滑要將計(jì)數(shù)減一,將滑條改變位置為了觸發(fā)下一次到頂部的計(jì)算
          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ù)展示,計(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ù)計(jì)數(shù)計(jì)算展示哪20條數(shù)據(jù),同時(shí)下滑要將計(jì)數(shù)加一,將滑條改變位置為了觸發(fā)下一次底部計(jì)算
          document.querySelector('#test.demo').scrollTo(0, 100)
          // 如果是第一次下滑計(jì)算緩存不能再是觸頂?shù)?,可以是計(jì)算緩存往上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的時(shí)候沒找到元素,如果是組件的話去控制臺(tái)看一下元素的class有沒有綁正確,再不然就給個(gè)你要綁定的id,在它下邊找一找,總之你的dom要綁對(duì);
  • 二是你用的組件是否需要給定scrollxy的屬性才能綁定scroll事件

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    Vue router動(dòng)態(tài)路由實(shí)現(xiàn)過程

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

    解決Can''t find variable: SockJS vue項(xiàng)目的問題

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

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

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

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

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

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

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

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

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

最新評(píng)論