ag-grid-react调用getSortModel()提示is not a function如何解决
问题原因
27.3.0版本的ag-grid完成了API拆分,和列状态、排序相关的getSortModel()方法从原GridApi迁移到了ColumnApi下,你在onSortChanged回调中通过e.api拿到的是GridApi实例,该实例上不存在这个方法,所以触发报错。
解决方法
直接在事件回调中取出columnApi实例调用对应方法即可,修正后的代码:
onSortChanged={useCallback(e => { console.log(e.columnApi.getSortModel(), 'im from sort') }, [])}
排查兜底方案
如果修改后仍触发报错,按以下顺序排查:
- 加可选链做边界容错,避免回调触发时API实例还未完成初始化的偶现问题:
onSortChanged={useCallback(e => { const sortModel = e?.columnApi?.getSortModel?.() ?? [] console.log(sortModel, 'im from sort') }, [])}
- 打印事件对象上的
e.api和e.columnApi,在控制台展开两个实例的方法列表,确认getSortModel的挂载位置,排除自定义封装、二次包装grid组件导致的API实例篡改问题。 - 检查项目中是否存在多版本ag-grid依赖共存的情况,比如部分依赖拉取了26以下的老版本ag-grid造成API冲突,可以通过锁版本、清理node_modules重装依赖解决。
版本适配提示
如果后续将ag-grid升级到28.0及以上版本,getSortModel()方法会被正式废弃,需要通过columnApi.getColumnState()提取所有列的状态,再过滤出排序相关字段得到排序模型,27.3.0版本不需要做此适配。
内容的提问来源于stack exchange,提问作者KARTHIKEYAN.A
相关产品推荐
相关产品推荐

