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

ant design vue中table表格滾動(dòng)加載實(shí)現(xiàn)思路

 更新時(shí)間:2024年07月05日 11:35:39   作者:ZJ_.  
在處理一寫(xiě)數(shù)據(jù)量特別大的情況下,我們不能把后端的數(shù)據(jù)一次性全部拿到前端在table表格中展示,為了考慮性能優(yōu)化,使用了滾動(dòng)加載表格數(shù)據(jù),這篇文章主要介紹了ant design vue中table表格滾動(dòng)加載實(shí)現(xiàn)思路,需要的朋友可以參考下

在ant design vue組件庫(kù)中,并沒(méi)有提供可以直接監(jiān)聽(tīng)table滾動(dòng)的api,在此我使用了原生js去對(duì)table表格賦予一個(gè)監(jiān)聽(tīng)表格滾動(dòng)事件。

在處理一寫(xiě)數(shù)據(jù)量特別大的情況下,我們不能把后端的數(shù)據(jù)一次性全部拿到前端在table表格中展示,為了考慮性能優(yōu)化,使用了滾動(dòng)加載表格數(shù)據(jù)。做這個(gè)功能之前,我們首先需要獲取到table滾動(dòng)到底部或者頂部時(shí)去觸發(fā)方法。

首先我想要對(duì)表格進(jìn)行滾動(dòng)加載,接口需要我傳遞的數(shù)據(jù)為行數(shù),傳遞了行數(shù)來(lái)規(guī)定從第幾行開(kāi)始返回部分?jǐn)?shù)據(jù),具體返回?cái)?shù)據(jù)的條數(shù)需要根據(jù)接口來(lái)定。

在此功能中,我每次需要獲取100條數(shù)據(jù),我想要每次table表格滾動(dòng)到底部的時(shí)候,獲取接下來(lái)的100條,或者滾動(dòng)到頂部時(shí)獲取上面的100條數(shù)據(jù),但是大家也可以根據(jù)自己的需求來(lái)去傳遞想要的條數(shù)。

table表格:

<a-table 
	ref="myTable" 
	size="middle" 
    :columns="columns" 
    :data-source="dataSource" 
    :pagination="false"
    :scroll="{ y: 'calc(100vh - 160px)' }" 
    :loading="loading">
</a-table>

賦予表格滾動(dòng)事件:

  • 使用 ref 來(lái)獲取到table表格
  • 當(dāng)表格存在時(shí),再去對(duì)表格進(jìn)行操作,否則可能導(dǎo)致獲取不到而報(bào)錯(cuò)
  • 使用 tableComponent.$el.querySelector('.ant-table-body') 來(lái)獲取表格組件內(nèi)部具有類名 ant-table-body 的容器元素。這個(gè)容器通常用于包裹表格的內(nèi)容,并且可能具有滾動(dòng)條
  • 給表格添加一個(gè)滾動(dòng)事件監(jiān)聽(tīng)器,當(dāng)表格容器發(fā)生滾動(dòng)時(shí),就會(huì)調(diào)用 handleScroll 方法
mounted() {
  this.$nextTick(() => {
    const tableComponent = this.$refs.myTable;
    if (tableComponent) {
      const tableContainer = tableComponent.$el.querySelector('.ant-table-body');
      tableContainer.addEventListener('scroll', this.handleScroll);
    }
  })
},

在給表格添加滾動(dòng)事件監(jiān)聽(tīng)的時(shí)候,同時(shí)要在頁(yè)面的銷毀鉤子函數(shù)中移除對(duì) table 添加的事件監(jiān)聽(tīng),以免會(huì)出現(xiàn)不必要的錯(cuò)誤,保證代碼的穩(wěn)定性。

beforeUnmount() {
   this.$nextTick(() => {
     const tableComponent = this.$refs.myTable;
     if (tableComponent) {
       const tableContainer = tableComponent.$el.querySelector('.ant-table-body');
       tableContainer.removeEventListener('scroll', this.handleScroll);
     }
   })
 },

滾動(dòng)事件:

到現(xiàn)在為止,當(dāng) table 表格滾動(dòng)的時(shí)候,就會(huì)觸發(fā) handleScroll 方法,下面是 handleScroll 方法:

handleScroll() { //滾動(dòng)的事件
     const tableComponent = this.$refs.myTable;
     const tableContainer = tableComponent.$el.querySelector('.ant-table-body');
     const scrollPosition = tableContainer.scrollTop;
     const isAtTop = scrollPosition === 0;
     if (isAtTop) {
        // 已滾動(dòng)到頂部,執(zhí)行相應(yīng)操作
       this.render(-100)
     }
     const isAtBottom = tableContainer.scrollHeight - scrollPosition === tableContainer.clientHeight;
     if (isAtBottom) {
       // 已滾動(dòng)到底部,執(zhí)行相應(yīng)操作
       this.render(100)
     }
 },
  • 使用this.$refs.myTable獲取表格組件的引用,并使用tableComponent.$el.querySelector('.ant-table-body')獲取表格容器元素的引用。這些步驟與前面的代碼段相同。
  • 接下來(lái),它獲取表格容器元素的滾動(dòng)位置,使用tableContainer.scrollTop來(lái)獲取當(dāng)前滾動(dòng)的垂直位置。
  • 然后,它通過(guò)比較滾動(dòng)位置是否為0來(lái)判斷是否滾動(dòng)到了頂部,將結(jié)果保存在isAtTop變量中。
  • 如果滾動(dòng)到了頂部(即isAtTop為真),調(diào)用了render(-100)方法,并將參數(shù)-100傳遞給它,在render方法中調(diào)用了接口獲取前100條數(shù)據(jù)
  • 接下來(lái),通過(guò)比較表格容器元素的總高度減去滾動(dòng)位置是否等于容器元素的可見(jiàn)高度,來(lái)判斷是否滾動(dòng)到了底部。這個(gè)條件判斷保存在isAtBottom變量中。
  • 如果滾動(dòng)到了底部(即isAtBottom為真),調(diào)用了render(100)方法,并將參數(shù)100傳遞給它,調(diào)用render方法中的接口獲取后100條數(shù)據(jù)

總之,這段代碼的作用是在滾動(dòng)事件發(fā)生時(shí),檢查是否滾動(dòng)到了頂部或底部,并且相應(yīng)的請(qǐng)求服務(wù)來(lái)拿到我們想要的數(shù)據(jù)。這樣就成功啦!

到此這篇關(guān)于ant design vue中table表格滾動(dòng)加載實(shí)現(xiàn)思路的文章就介紹到這了,更多相關(guān)ant design vue滾動(dòng)加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中全局路由守衛(wèi)中替代this操作(this.$store/this.$vux)

    vue中全局路由守衛(wèi)中替代this操作(this.$store/this.$vux)

    這篇文章主要介紹了vue中全局路由守衛(wèi)中替代this操作(this.$store/this.$vux),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 關(guān)于json-bigint處理大數(shù)字問(wèn)題

    關(guān)于json-bigint處理大數(shù)字問(wèn)題

    這篇文章主要介紹了關(guān)于json-bigint處理大數(shù)字問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Vue中methods實(shí)現(xiàn)原理是什么

    Vue中methods實(shí)現(xiàn)原理是什么

    methods是如何綁定this的 methods綁定上下文執(zhí)行環(huán)境是通過(guò)bind來(lái)進(jìn)行的呢,本文給大家介紹Vue中methods實(shí)現(xiàn)原理是什么,感興趣的朋友一起看看吧
    2023-11-11
  • 基于Vue el-autocomplete 實(shí)現(xiàn)類似百度搜索框功能

    基于Vue el-autocomplete 實(shí)現(xiàn)類似百度搜索框功能

    本文通過(guò)代碼給大家介紹了Vue el-autocomplete 實(shí)現(xiàn)類似百度搜索框功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 如何寫(xiě)一個(gè) Vue3 的自定義指令

    如何寫(xiě)一個(gè) Vue3 的自定義指令

    這篇文章主要介紹了如何寫(xiě)一個(gè) Vue3 的自定義指令,如果我們想在 Vue.js 的項(xiàng)目中實(shí)現(xiàn)圖片懶加載,那么用自定義指令就再合適不過(guò)了,那么接下來(lái)就讓我手把手帶你用 Vue3 去實(shí)現(xiàn)一個(gè)圖片懶加載的自定義指令 v-lazy,需要的朋友可以參考一下
    2022-01-01
  • 解決vue props傳Array/Object類型值,子組件報(bào)錯(cuò)的情況

    解決vue props傳Array/Object類型值,子組件報(bào)錯(cuò)的情況

    這篇文章主要介紹了解決vue props傳Array/Object類型值,子組件報(bào)錯(cuò)的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • vue+elementUI如何實(shí)現(xiàn)頂部路由標(biāo)簽跳轉(zhuǎn)

    vue+elementUI如何實(shí)現(xiàn)頂部路由標(biāo)簽跳轉(zhuǎn)

    這篇文章主要介紹了vue+elementUI如何實(shí)現(xiàn)頂部路由標(biāo)簽跳轉(zhuǎn)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue3項(xiàng)目中各個(gè)文件的作用詳細(xì)介紹

    vue3項(xiàng)目中各個(gè)文件的作用詳細(xì)介紹

    在Vue3項(xiàng)目中,通常會(huì)有以下一些常見(jiàn)的目錄和文件,下面這篇文章主要給大家介紹了關(guān)于vue3項(xiàng)目中各個(gè)文件的作用,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • Vue項(xiàng)目中使用百度地圖api的詳細(xì)步驟

    Vue項(xiàng)目中使用百度地圖api的詳細(xì)步驟

    在之前的一個(gè)小項(xiàng)目中,用到的顯示當(dāng)?shù)氐牡貓D功能,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中使用百度地圖api的詳細(xì)步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • 利用v-viewer圖片預(yù)覽插件放大需要預(yù)覽的圖片

    利用v-viewer圖片預(yù)覽插件放大需要預(yù)覽的圖片

    本文介紹了v-viewer插件的安裝和使用步驟,包括npm安裝、在main.js文件中全局引入,以及常用的三種使用方式,文章提供了簡(jiǎn)單的布局頁(yè)面效果,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10

最新評(píng)論