当列具有返回React组件的cellRenderer时,AgGridReact rowData

给定AgGridReact类似以下内容的组件:

<AgGridReact rowData={myData}>
    <AgGridColumn field="status" cellRenderer={() => <span />} />
    </AgGridReact>

当我将不同的值传递给myDataprop时,出现以下错误:

ag-Grid:当网格位于图形行的中间时,无法使网格绘制行。当网格处于渲染阶段时,您的代码可能称为网格API方法。为了解决这个问题,请将API调用置于超时中,例如,代替setapi.refreshView(),调用setTimeout(function(){api.refreshView(),0})。要查看导致刷新的代码的哪一部分,请检查此堆栈跟踪。

如果将cellRenderer替换为,则不会发生此问题() => 'foo'

我没有调用任何网格API方法。从堆栈跟踪中,有问题的API调用是内部的(已调用,因为已rowData更改)。

rowData道具来自Redux商店。它是由传奇派出的动作而改变的。这可能相关,也可能不相关。


郎朗坤
浏览 485回答 2
2回答

繁花不似锦

对于遇到此问题且没有上述特定错误的任何人,当我在工具提示渲染器中出现错误(我试图在null上调用filter)时遇到了此错误,并且由于HMR(热模块重新加载)而出现了问题)刷新组件的方式与冷启动时有所不同。拉出一些头发并用Google搜寻直到每个链接都变成紫色后,我向ag-grid本身添加了一些自定义日志记录。在ag-grid-community.amd.js(您可能需要一个不同的文件)中,我添加了以下内容,getLockOnRefresh()以便我理解调用getLockOnRefresh的内容,并在该错误处抛出该错误。console.log('hi there', throw new Error().stack)然后,我在Web检查器中添加了一些调试语句,最终在我的工具提示渲染器中发现了实际错误。因此,可以将其视为围绕ag-grid和HMR的警告信标,这可能会吞噬错误并导致您暂时走错路。这可能无关紧要,但是如果相关的话,我也使用React,Redux,Immer,并且我的网站已加载到Electron中。

摇曳的蔷薇

使用cellRendererFramework修复问题。就像是:class MyComponent extends React.Component {&nbsp; &nbsp; render() { return <span />; }}<AgGridColumn field="status" cellRendererFramework={MyComponent} />这有点不方便,但是可以。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript