You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中AG Grid无限滚动与数据虚拟化实现能力问询

AgGrid无限滚动与虚拟化实现方案

AgGrid原生支持无限滚动和行虚拟化,完全能满足你提出的需求,以下是具体实现方式:

1. 滚动至底部自动调用API加载数据

开启AgGrid的无限滚动模式后,组件会自动监听滚动位置,当需要新数据时触发API请求,无需手动处理滚动监听。核心配置如下:

  • 设置rowModelType="infinite":启用无限行模型
  • 配置datasource对象:其中的getRows方法会在AgGrid需要新数据时被调用,你只需在该方法内发起API请求,返回对应范围的数据即可。

React中的代码示例:

import { AgGridReact, useGridRef } from 'ag-grid-react';
import 'ag-grid-community/styles/ag-grid.css';
import 'ag-grid-community/styles/ag-theme-alpine.css';

const InfiniteScrollGrid = () => {
  const gridRef = useGridRef();

  // 定义数据源
  const infiniteDatasource = {
    getRows: async (params) => {
      try {
        // 根据AgGrid传入的行范围请求数据
        const response = await fetch(`/api/your-data?start=${params.startRow}&end=${params.endRow}`);
        const result = await response.json();
        
        // 将获取到的数据返回给AgGrid,同时传入总数据量
        params.successCallback(result.rows, result.totalCount);
      } catch (error) {
        params.failCallback();
      }
    }
  };

  const columnDefs = [
    { field: 'id', headerName: 'ID' },
    { field: 'name', headerName: '名称' },
    { field: 'amount', headerName: '数值' }
  ];

  return (
    <div className="ag-theme-alpine" style={{ height: '600px', width: '100%' }}>
      <AgGridReact
        rowModelType="infinite"
        datasource={infiniteDatasource}
        columnDefs={columnDefs}
        // 每次加载20条数据,控制预加载的块大小
        cacheBlockSize={20}
        // 限制内存中缓存的数据块数量,避免内存占用过高
        maxBlocksInCache={5}
      />
    </div>
  );
};

export default InfiniteScrollGrid;

2. 虚拟化预加载与持续API调用

AgGrid的虚拟化是内置功能,默认只会渲染当前视口内的行,同时会预加载cacheBlockSize指定的下一块数据(比如设置为20,就会提前加载下20条),实现无延迟渲染。

  • cacheBlockSize:控制每次从API获取的行数,也就是预加载的数量,可设置为10-20满足你的需求
  • 无限滚动模式下,getRows方法会在滚动到需要新数据块时自动触发,持续调用API获取数据,无需额外编写循环或监听逻辑

额外说明

如果不使用原生无限滚动,想手动实现滚动到底部追加数据,也可以通过onBodyScroll事件监听滚动位置,判断是否到达底部后调用API,再用gridRef.current.api.updateRowData({ add: newRows })追加数据,但这种方式不如原生无限滚动高效,因为AgGrid会为无限行模型优化内存管理,自动清理不在缓存范围内的行,避免内存溢出。

内容的提问来源于stack exchange,提问作者Ramki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:52:33