最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

遇到的問(wèn)題

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

解決辦法

綁定滾動(dòng)事件,頁(yè)面只顯示在可視區(qū)域內(nèi)的數(shù)據(jù),沒(méi)在可視區(qū)域內(nèi)的數(shù)據(jù)不予展示,dom元素的scrollHeight和offsetHeight和scrollTop三個(gè)值的比較,判斷是否滑到底部了或者頂部了,滑到底部或頂部之后,用scrollTo函數(shù)改變滾動(dòng)條的位置,使其可以再次觸發(fā)滑到頂部或底部,用計(jì)數(shù)count,下滾一下count++,上滾一下count–,用count來(lái)從原數(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('沒(méi)有更多數(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是要在這一頁(yè)展示的數(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('沒(méi)有更多數(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沒(méi)辦法綁定上handlescroll事件,

原因目前碰到的有二:

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

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

總結(jié)

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

相關(guān)文章

  • vue實(shí)現(xiàn)大文件切片上傳的示例詳解

    vue實(shí)現(xiàn)大文件切片上傳的示例詳解

    前端上傳文件很大時(shí),會(huì)出現(xiàn)各種問(wèn)題,比如連接超時(shí)了,網(wǎng)斷了,都會(huì)導(dǎo)致上傳失敗,這個(gè)時(shí)候就需要將文件切片上傳,下面我們就來(lái)學(xué)習(xí)一下如何使用vue實(shí)現(xiàn)大文件切片上傳吧
    2023-11-11
  • vue 如何獲取視頻第一幀

    vue 如何獲取視頻第一幀

    這篇文章主要介紹了vue 如何獲取視頻第一幀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 詳解Vue3.0中ElementPlus<input輸入框自動(dòng)獲取焦點(diǎn)>

    詳解Vue3.0中ElementPlus<input輸入框自動(dòng)獲取焦點(diǎn)>

    這篇文章主要給大家介紹了關(guān)于Vue3.0中ElementPlus<input輸入框自動(dòng)獲取焦點(diǎn)>的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue3.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Vue3中引用本地圖片路徑的方法詳解

    Vue3中引用本地圖片路徑的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Vue3中引用本地圖片路徑的常用方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • vue.config.js配置報(bào)錯(cuò)解決辦法(可能是與webpack混淆)

    vue.config.js配置報(bào)錯(cuò)解決辦法(可能是與webpack混淆)

    在Vue.js開發(fā)過(guò)程中,vue.config.js文件是用于配置項(xiàng)目的,特別是對(duì)于開發(fā)環(huán)境的設(shè)置,這篇文章主要給大家介紹了關(guān)于vue.config.js配置報(bào)錯(cuò)解決的相關(guān)資料,可能是與webpack混淆,需要的朋友可以參考下
    2024-06-06
  • Vue3中使用vuex4的實(shí)現(xiàn)示例

    Vue3中使用vuex4的實(shí)現(xiàn)示例

    本文主要介紹了Vue3中使用vuex4的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Vue項(xiàng)目打包后js文件過(guò)大的問(wèn)題解決辦法

    Vue項(xiàng)目打包后js文件過(guò)大的問(wèn)題解決辦法

    在Vue項(xiàng)目中打包體積過(guò)大是一個(gè)常見(jiàn)的問(wèn)題,這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目打包后js文件過(guò)大的問(wèn)題解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-05-05
  • element中drawer模板的實(shí)現(xiàn)

    element中drawer模板的實(shí)現(xiàn)

    本文主要介紹了element中drawer模板的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 淺析vue3中組件的二次封裝

    淺析vue3中組件的二次封裝

    在實(shí)際開發(fā)中每個(gè)開發(fā)者應(yīng)該都有經(jīng)歷過(guò)對(duì)組件進(jìn)行二次封裝,本文將從三個(gè)方面來(lái)基于 Element UI 的el-input組件簡(jiǎn)單實(shí)現(xiàn)一下組件的二次封裝,有需要的可以參考下
    2023-09-09
  • vue?vue-touch移動(dòng)端手勢(shì)詳解

    vue?vue-touch移動(dòng)端手勢(shì)詳解

    這篇文章主要介紹了vue?vue-touch移動(dòng)端手勢(shì)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論

永州市| 南通市| 郓城县| 平邑县| 临江市| 长垣县| 扬中市| 克拉玛依市| 本溪| 平阴县| 麻阳| 佛学| 加查县| 甘谷县| 敦煌市| 隆德县| 兴仁县| 扬州市| 定边县| 长沙县| 河曲县| 义马市| 三都| 凯里市| 宁武县| 唐山市| 承德市| 乌拉特前旗| 金昌市| 综艺| 建平县| 通许县| 元阳县| 凉城县| 澄江县| 新营市| 巴中市| 上栗县| 龙游县| 当雄县| 大连市|