Javascript AgGridReact在数据更改时不重新呈现

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}

我将rowData和columnDefs作为道具传递。网格正在正确加载。但是,当数据更改时,网格不会重新渲染。它将进入父组件的渲染,并传递给AgGridReact。但是,仍然没有重新渲染

因为它是一个完整的react应用程序,所以我在中添加了代码

主要代码如下所示

<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>

希望这有助于