Javascript AgGridReact在数据更改时不重新呈现
我将rowData和columnDefs作为道具传递。网格正在正确加载。但是,当数据更改时,网格不会重新渲染。它将进入父组件的渲染,并传递给AgGridReact。但是,仍然没有重新渲染 因为它是一个完整的react应用程序,所以我在中添加了代码 主要代码如下所示Javascript AgGridReact在数据更改时不重新呈现,javascript,ag-grid,ag-grid-react,Javascript,Ag Grid,Ag Grid React,我将rowData和columnDefs作为道具传递。网格正在正确加载。但是,当数据更改时,网格不会重新渲染。它将进入父组件的渲染,并传递给AgGridReact。但是,仍然没有重新渲染 因为它是一个完整的react应用程序,所以我在中添加了代码 主要代码如下所示 <AgGridReact // properties columnDefs={this.state.columnDefs} rowData={this.props.data}
<AgGridReact
// properties
columnDefs={this.state.columnDefs}
rowData={this.props.data}
// events
onGridReady={this.onGridReady}>
</AgGridReact>
不确定您是否得到了解决方案。我有一个解决办法 甚至我以前在通过道具将rosData传递给AgGridReact时也遇到过这个问题,然后我尝试使用setRowData(rows)API函数更新行 网格准备好后,gridOptions也将具有api,以便您可以通过调用gridOptions.api访问Ag grid api,或者您可以在onGridReady方法中创建此.api,如下所示
onGridReady( params ) {
const rowData = this.props.rows;
this.api = params.api;
if ( rowData.length > 0 && this.api ) {
this.api.setRowData( rowData );
}
}
你需要在你的组件中调用同样的东西来接收道具
componentWillReceiveProps( nextProps ) {
if ( !isEqual( this.props.rows, nextProps.rows ) && this.api ) {
this.api.setRowData( nextProps.rows );
}
}
然后可以从组件中删除rowData道具
<AgGridReact
// properties
columnDefs={this.state.columnDefs}
// events
onGridReady={this.onGridReady}>
</AgGridReact>
希望这有助于