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

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

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

在ant design vue組件庫中,并沒有提供可以直接監(jiān)聽table滾動的api,在此我使用了原生js去對table表格賦予一個監(jiān)聽表格滾動事件。

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

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

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

table表格:

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

賦予表格滾動事件:

  • 使用 ref 來獲取到table表格
  • 當(dāng)表格存在時,再去對表格進(jìn)行操作,否則可能導(dǎo)致獲取不到而報錯
  • 使用 tableComponent.$el.querySelector('.ant-table-body') 來獲取表格組件內(nèi)部具有類名 ant-table-body 的容器元素。這個容器通常用于包裹表格的內(nèi)容,并且可能具有滾動條
  • 給表格添加一個滾動事件監(jiān)聽器,當(dāng)表格容器發(fā)生滾動時,就會調(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);
    }
  })
},

在給表格添加滾動事件監(jiān)聽的時候,同時要在頁面的銷毀鉤子函數(shù)中移除對 table 添加的事件監(jiān)聽,以免會出現(xiàn)不必要的錯誤,保證代碼的穩(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);
     }
   })
 },

滾動事件:

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

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

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

到此這篇關(guān)于ant design vue中table表格滾動加載實現(xiàn)思路的文章就介紹到這了,更多相關(guān)ant design vue滾動加載內(nèi)容請搜索腳本之家以前的文章或繼續(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),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 關(guān)于json-bigint處理大數(shù)字問題

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

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

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

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

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

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

    如何寫一個 Vue3 的自定義指令

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

    解決vue props傳Array/Object類型值,子組件報錯的情況

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

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

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

    vue3項目中各個文件的作用詳細(xì)介紹

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

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

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

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

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

最新評論