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

AgGrid 26.0.1服务端数据源持续触发重复请求且不显示加载行问题排查

我帮你分析下这个问题,看起来是升级到AgGrid 26后,新增的serverSideStoreType={ServerSideStoreType.Partial}配置和你的现有逻辑产生了冲突,导致Grid一直认为还有未加载的数据,从而重复发起请求。以下是几个关键的排查点和修复方案:

1. 修复successCallback的总行数传递错误

这是最可能的核心原因。在AgGrid的Server Side模式下,successCallback的第二个参数是总数据行数(不是当前请求的endRow),Grid会根据这个值判断是否还有更多数据需要加载。

看你的代码里,你传递的是request.endRow,这会让Grid误以为总共有request.endRow行数据,但如果后端返回的实际行数小于request.endRow - request.startRow,Grid就会一直重复请求同一个startRow,试图加载"剩余"的行。

修正代码:

// 原来的错误写法
successCallback(result.data.content, request.endRow);

// 改成传递后端返回的真实总行数
successCallback(result.data.content, result.data.lastRow ?? 0);

同时,你代码里的lastPageLoadedBefore逻辑其实是多余的,甚至可能导致错误——手动修改endRow会打乱Grid的分页逻辑,应该直接让后端根据request.startRow和request.endRow返回对应的数据段,然后通过总行数告诉Grid是否到了最后一页。

2. 移除无效的infiniteInitialRowCount配置

infiniteInitialRowCount是给Infinite Row Model设计的参数,在Server Side Row Model下完全无效。AgGrid 26对配置的校验更严格,保留这个参数可能会让Grid误判数据总量,触发无限请求。直接从组件props中删除这个配置即可。

3. 调整缓存配置以适配Partial Store模式

你设置了rowBuffer={0},这个值在Partial Store模式下可能会导致Grid频繁请求数据——因为没有缓冲行,Grid会不断检查视图内的行是否已加载。建议改成默认值10,或者根据你的业务需求调整到合理数值。

另外,maxBlocksInCache的条件设置(shouldHideRow ? undefined : 100)也可能引发异常:当shouldHideRow为true时,maxBlocksInCache变为undefined,Partial Store的缓存机制可能出现混乱。建议保持这个值为固定的合理数值(比如100),不要动态切换。

4. 检查Grid初始化时的过滤操作

在onGridReady里你调用了api.setFilterModel({}),这个操作会触发filterChanged事件进而发起数据请求。虽然v24里没问题,但在v26的Partial Store模式下,可能和初始化请求冲突,导致重复请求。你可以暂时注释掉这行代码,看看问题是否消失;如果消失,再调整初始化逻辑(比如在Grid完全就绪后再清空过滤模型)。

按照上面的步骤修改后,应该就能解决无限请求的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:19:06