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

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

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

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

在處理一寫數(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ù)來規(guī)定從第幾行開始返回部分?jǐn)?shù)據(jù),具體返回?cái)?shù)據(jù)的條數(shù)需要根據(jù)接口來定。

在此功能中,我每次需要獲取100條數(shù)據(jù),我想要每次table表格滾動(dòng)到底部的時(shí)候,獲取接下來的100條,或者滾動(dòng)到頂部時(shí)獲取上面的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>

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

  • 使用 ref 來獲取到table表格
  • 當(dāng)表格存在時(shí),再去對(duì)表格進(jìn)行操作,否則可能導(dǎo)致獲取不到而報(bào)錯(cuò)
  • 使用 tableComponent.$el.querySelector('.ant-table-body') 來獲取表格組件內(nèi)部具有類名 ant-table-body 的容器元素。這個(gè)容器通常用于包裹表格的內(nèi)容,并且可能具有滾動(dòng)條
  • 給表格添加一個(gè)滾動(dòng)事件監(jiān)聽器,當(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)聽的時(shí)候,同時(shí)要在頁面的銷毀鉤子函數(shù)中移除對(duì) table 添加的事件監(jiān)聽,以免會(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')獲取表格容器元素的引用。這些步驟與前面的代碼段相同。
  • 接下來,它獲取表格容器元素的滾動(dòng)位置,使用tableContainer.scrollTop來獲取當(dāng)前滾動(dòng)的垂直位置。
  • 然后,它通過比較滾動(dòng)位置是否為0來判斷是否滾動(dòng)到了頂部,將結(jié)果保存在isAtTop變量中。
  • 如果滾動(dòng)到了頂部(即isAtTop為真),調(diào)用了render(-100)方法,并將參數(shù)-100傳遞給它,在render方法中調(diào)用了接口獲取前100條數(shù)據(jù)
  • 接下來,通過比較表格容器元素的總高度減去滾動(dòng)位置是否等于容器元素的可見高度,來判斷是否滾動(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ù)來拿到我們想要的數(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數(shù)字類型過濾器的示例代碼

    vue數(shù)字類型過濾器的示例代碼

    本篇文章主要介紹了vue數(shù)字類型過濾器的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 關(guān)于vue2響應(yīng)式缺陷的問題

    關(guān)于vue2響應(yīng)式缺陷的問題

    這篇文章主要介紹了關(guān)于vue2響應(yīng)式缺陷的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 如何抽象一個(gè)Vue公共組件

    如何抽象一個(gè)Vue公共組件

    這篇文章主要介紹了如何抽象一個(gè)Vue公共組件,以一個(gè)數(shù)字鍵盤組件為例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Vue3 emits結(jié)合回調(diào)函數(shù)的使用方式

    Vue3 emits結(jié)合回調(diào)函數(shù)的使用方式

    文章介紹了回調(diào)函數(shù)的概念,并通過一個(gè)簡單的例子來說明其工作原理,接著,文章提到在Vue.js中,回調(diào)函數(shù)常用于子父組件之間的通信,父組件可以接受子組件的消息并調(diào)用回調(diào)函數(shù),文章通過代碼示例和解釋,幫助讀者理解回調(diào)函數(shù)在實(shí)際開發(fā)中的應(yīng)用
    2024-12-12
  • Vue 中批量下載文件并打包的示例代碼

    Vue 中批量下載文件并打包的示例代碼

    本篇文章主要介紹了Vue 中批量下載文件并打包的示例代碼,用 ajax 將文件下載, 然后用 jszip 壓縮文件, 最后用 file-saver 生成文件,有興趣的可以了解一下
    2017-11-11
  • vue2中使用sass并配置全局的sass樣式變量的方法

    vue2中使用sass并配置全局的sass樣式變量的方法

    這篇文章主要介紹了vue2中使用sass并配置全局的sass樣式變量的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • vue實(shí)現(xiàn)鍵盤輸入支付密碼功能

    vue實(shí)現(xiàn)鍵盤輸入支付密碼功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)鍵盤輸入支付密碼功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • vue $refs動(dòng)態(tài)拼接獲取值問題

    vue $refs動(dòng)態(tài)拼接獲取值問題

    這篇文章主要介紹了vue $refs動(dòng)態(tài)拼接獲取值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 解決vue.js在編寫過程中出現(xiàn)空格不規(guī)范報(bào)錯(cuò)的問題

    解決vue.js在編寫過程中出現(xiàn)空格不規(guī)范報(bào)錯(cuò)的問題

    下面小編就為大家?guī)硪黄鉀Qvue.js在編寫過程中出現(xiàn)空格不規(guī)范報(bào)錯(cuò)的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Vue.js中動(dòng)態(tài)更改svg的相關(guān)屬性詳解

    Vue.js中動(dòng)態(tài)更改svg的相關(guān)屬性詳解

    這篇文章主要為大家介紹了Vue.js中動(dòng)態(tài)更改svg的相關(guān)屬性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論

大姚县| 周宁县| 万盛区| 洞口县| 克东县| 乾安县| 瓮安县| 西乌珠穆沁旗| 绥滨县| 北碚区| 定西市| 桑植县| 马龙县| 巴马| 灵璧县| 兴仁县| 蓬溪县| 阜康市| 麦盖提县| 十堰市| 怀安县| 西贡区| 南平市| 丘北县| 二连浩特市| 贵溪市| 旺苍县| 毕节市| 嘉黎县| 博乐市| 酒泉市| 九龙城区| 天峻县| 西和县| 威远县| 寿光市| 平原县| 河东区| 二手房| 天峻县| 咸宁市|