这个问题通常是由于 Ag Grid 组件重绘时导致的。可以通过在 Ag Grid 的选项中添加一个 rowNodeId 属性来解决这个问题。具体实现如下:
gridOptions = { rowNodeId: 'id', // 注意这里的 ‘id’ 应该是每一行数据的唯一标识符 ... }
gridApi.setRowData(data, {keepRenderedRows: true})
gridApi.setRowData(newData)
let selectedIds = []; gridApi.getSelectedRows().forEach(row => selectedIds.push(row.id)); gridOptions.api.purgeInfiniteCache(); // 重绘 grid gridApi.setRowData(rowsToAdd); // 这里传入新的数据数组 selectedIds.forEach(id => { let rowNode = gridApi.getRowNode(id); if (rowNode) rowNode.setSelected(true, true); }); // 注意 setSelected() 方法有两个参数,第一个表示是否选中,第二个表示是否在不改变 selectedRows 数组的情况下更新渲染。