ag-grid配置wrapText与autoHeight后修改字体大小行高未动态更新问题
问题核心原因
ag-grid 的 autoHeight 逻辑默认仅在单元格内容变更触发换行时才会重新计算行高,你同时使用手动设置固定行高、getRowHeight 配置和 autoHeight 存在优先级冲突:当你手动调用 rowNode.setRowHeight() 或者配置了 getRowHeight 时,autoHeight 的自动计算逻辑会被强制覆盖,只有未指定固定行高时 autoHeight 才会生效。
修复步骤
- 第一步:移除冲突配置,删除代码中的
getRowHeight配置项,同时去掉手动调用rowNode.setRowHeight()的逻辑,避免固定行高覆盖autoHeight能力。 - 第二步:调整行高刷新逻辑,字体样式更新完成后,先强制刷新所有单元格确保样式生效,再调用
resetRowHeights()触发全量行高重新计算,不需要手动指定行高数值。
修改后的redrawAllRows参考代码:
redrawAllRows = () => { size += 10; const rowFontSize = size + "px"; this.setState({rowStyle: {fontSize: rowFontSize}}, () => { // 强制刷新所有单元格,确保新字体样式已应用 this.gridApi.refreshCells({force: true}); // 重置所有行高,触发autoHeight根据当前内容和样式重新计算 this.gridApi.resetRowHeights(); // 通知表格行高已变更,更新整体布局 this.gridApi.onRowHeightChanged(); }); };
额外注意点
如果你的表格使用了自定义单元格渲染组件,需要确保渲染内容是同步生成的,避免 autoHeight 计算时还未拿到最终渲染内容导致高度计算偏差。
内容的提问来源于stack exchange,提问作者fabricemarcelin
相关产品推荐
相关产品推荐

