react 中ant design table 表格组件滚动条监听方法

本文介绍了在React中使用Ant Design Table组件监听滚动条的方法,特别强调了在Class组件中的实现,包括绑定ref以获取表格元素,并应用防抖函数以优化性能。文章还提及了滚动条监听涉及的技术,如防抖、节流、闭包以及onScrollCapture事件。
部署运行你感兴趣的模型镜像

react 中ant design table 表格组件滚动条监听方法

1、包的版本提示## 标题
 "react": "^16.8.6"
  "react-dom": "^16.8.6"
  "antd": "^3.19.5"
2、先上代码
import React, { PureComponent } from 'react';
import ReactDOM from 'react-dom';
import { Table } from 'antd';
import { debounce } from '@/utils/tools';

class BranchCompanyPage extends PureComponent {
      onScrollHandle = () => {
        const table = ReactDOM.findDOMNode(this.table);
        // 获取表格dom元素
        const tableBody = table.querySelector('.ant-table-body');
        // 容器可视区高度
        const tableBodyHeight = tableBody.clientHeight;
        // 内容高度
        const contentHeight = tableBody.scrollHeight;
        // 距离顶部的高度
        const toTopHeight = tableBody.scrollTop;
        // 当距离底部只有0.5时,重新获取数据
        if (contentHeight - (toTopHeight + tableBodyHeight) < 0.5) {
           // 加载数据, 其实这里还可以进行进一步的判断,判断页面是否允许发起请求,
           // 如:数据已经是最后一页了,没有必要再发起请求
        }
    }
  
    render() {
        const columns = [{...}]; // 这里是省略了,自己写配置
        const list = [{...},{...}] // 这里是省略了,自己写配置
        // debounce 为防抖函数
        return(
        	<div onScrollCapture={debounce(this.onScrollHandle, 1000)}> 
                <Table
                    ref={(ref) => this.table = ref} // 绑定ref很重要
                    pagination={false}
                    columns={columns}
                    dataSource={list}
                    scroll={{ x: `calc(${headWidth}px + 50%)`, y: screenHeight - 130 }}
             	 />
            </div>
        )
    }
}
3、提供一个简单的防抖函数给大家
/*
* fn [function] 需要防抖的函数
* delay [number] 毫秒,防抖期限值
*/
export function debounce(fn, delay) {
  let timer = null //借助闭包
  return function () {
    if (timer) {
      clearTimeout(timer) //进入该分支语句,说明当前正在一个计时过程中,并且又触发了相同事件。所以要取消当前的计时,重新开始计时
    }
    timer = setTimeout(() => {
      console.log('执行事件')
      fn()
    }, delay) // 进入该分支说明当前并没有在计时,那么就开始一个计时
  }
}
4、总结

(1)、首先说明,react 不同的组件,其监听方法不一样,我这里用的是class组件,函数式组件的写法不大一样,网上有很多;

(2)、重点是需要用到react的react-dom, 以及给table绑定ref,这个属性的作用就是为了获取table组件的元素;

(3)、滚动条的触发非常平凡,需要防抖;

(4)、涉及到的知识有防抖、节流、闭包、滚动条监听方onScrollCapture。
(5)、获取屏幕距离知识表如下,可做参考
js视图距离获取

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值