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

React Ag Grid是否存在数据加载完成时触发的内置事件?

React Ag Grid 数据加载完成事件及rowData为null问题解决

内置数据加载完成相关事件

React Ag Grid 提供了多个与数据加载相关的内置事件,其中最可靠的确认数据已完全加载并渲染完成的事件是:

  • modelUpdated:每当网格的数据模型完成更新(包括首次加载rowData、数据批量替换、分页切换、过滤/排序操作后)时触发,此时可以确保网格已处理完所有行数据,能正常获取到完整的rowData。
  • rowDataChanged:当rowData被整体替换时触发(比如通过api.setRowData()或修改组件的rowData prop),但注意这个事件触发时数据可能还未完成渲染,若要依赖渲染后的状态,优先使用modelUpdated。
  • gridReady:网格的DOM结构与API初始化完成时触发,此时可获取到grid API,但rowData可能还未传入或处理,不适合直接执行依赖完整rowData的逻辑。

解决rowData为null的问题

你遇到的params.rowdata为null的情况,通常是因为在数据未完成加载/渲染时就执行了依赖rowData的函数。可以通过以下方式解决:

  1. 监听modelUpdated事件执行业务逻辑
    在该事件的回调中,通过params.api.getRowData()获取完整的已加载数据,再执行你的业务函数,确保数据已准备就绪。示例代码:
    import { AgGridReact, useGridApiRef } from 'ag-grid-react';
    
    const YourGridComponent = () => {
      const gridApiRef = useGridApiRef();
    
      const handleModelUpdated = (params) => {
        const fullRowData = params.api.getRowData();
        if (fullRowData.length > 0) {
          // 执行需要依赖完整rowData的函数
          yourTargetFunction(fullRowData);
        }
      };
    
      const handleGridReady = (params) => {
        // 异步加载数据并设置给网格
        fetch('/your-data-api')
          .then(res => res.json())
          .then(data => params.api.setRowData(data));
      };
    
      return (
        <div className="ag-theme-alpine" style={{ height: 400 }}>
          <AgGridReact
            apiRef={gridApiRef}
            onGridReady={handleGridReady}
            onModelUpdated={handleModelUpdated}
            columnDefs={yourColumnDefinitions}
          />
        </div>
      );
    };
    
  2. 避免异步数据加载的竞态问题
    如果存在多个并行的数据请求,可能导致rowData被多次覆盖或加载顺序混乱。可以通过取消之前的请求(如使用AbortController)或只保留最后一次请求的结果,确保网格最终使用的是正确的完整数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:25:14