Ag-grid:从 getRowNodeId 回调中检测到重复的节点 ID 107,这可能会导致您的网格出现问题

Ag-grid: duplicate node id 107 detected from getRowNodeId callback , this could cause issues in your grid

我打算在 ag-grid 数据table 上进行实时数据流传输,所以我将 DeltaRowData 用于 gridOptions 并添加了 getRowNodeId 方法以及 return 唯一值 'id'. 毕竟,我在我设置的一段时间内在我的网格 table 上获得了实时更新结果,但是有些行是重复的,所以我可以注意到每次加载更新数据时总计数都会增加一点。问题标题是来自浏览器控制台的警告消息,我收到了一堆具有不同 ID 号的消息。实际上不应该从下面 docs 执行此操作。这应该可以检测重复项,如果不存在则巧妙地添加新的重复项。 Ofc,有几种方法可以实时刷新数据,但我选择了这个,因为它说它有助于保留网格信息,如选定的行、滚动在网格上的当前位置等。我正在使用 vanilla js,不打算使用任何框架。 如何在不更改任何当前网格内容的情况下定期更新实时数据?代码没有错误,所以不要试图谈论任何错误。也许我对当前的实施有误,无论如何,我想知道这个想法或听听任何实施经验。

let gridOptions = {
    ....
    deltaRowDataMode: true,
    getRowNodeId = (data) => {
        return data.id; // return the property you want set as the id.
    }
}

fetch(loadUrl).then((res) => {
   return res.json()
}).then((data) => {
  gridOptions.api.setRowData(data);
})

...

如果你得到:

duplicated node warning

这意味着您的 getRowNodeId() 有 2 个不同行的 1 个值。

这是部分 from source

if (this.allNodesMap[node.id]) {
        console.warn("ag-grid: duplicate node id '" + node.id + "' detected from getRowNodeId callback, this could cause issues in your grid.");
}

所以尝试再次检查您的数据。

如果您 100% 确定存在与您的数据无关的错误 - 切断私人数据,创建一个 plinkr/stackblitz 示例来重现您的问题,然后它会更简单检查并帮助你。