我的问题是我的网格根本不会保持响应,或者如果我尝试创建一个没有那么多列的网格,整个网格看起来就很奇怪。我想让它伸展到它的容器宽度。这是我期望 sizeColumsToFit 做的。我收到警告:ag-Grid: tried to call sizeColumnsToFit() but the grid is coming back with zero width, maybe the grid is not visible yet on the screen?
但我该如何解决这个问题。例如,我从减速器加载数据,因此会发生重新渲染,或者当我的数据处于获取状态时,我有一个加载微调器。你们采取什么模式来解决这个问题?
onGridReady(params) {
const { mode } = this.props;
this.gridApi = params.api;
this.gridApi.mode = mode;
this.columnApi = params.columnApi;
this.gridApi.addDispatcher = this.props.add;
this.gridApi.deleteDispatcher = this.props.delete;
this.gridApi.updateDispatcher = this.props.update;
console.log(window.innerWidth);
this.sizeToFit();
window.onresize = () => {
this.gridApi.sizeColumnsToFit();
};
}
这是我的渲染方法:
determineRender() {
const {isWaiting, columnDefs, schema } = this.props;
let { data } = this.props;
data = denormalize(data.result, schema, data.entities);
data = _.orderBy(data, ['id'], ['desc']);
if (isWaiting) {
return (
<div className={cx('grid-loading')}>
<CircularProgress className={cx('grid-progress')} color="accent" size={500} />
</div>
);
}
return (
<div className={cx('grid-full')}>
<div
className={cx('grid-full') + ' ag-theme-material'}>
<AgGridReact
columnDefs={columnDefs}
enableSorting
enableColResize
deltaRowDataMode
getRowNodeId={nodeData => nodeData.id}
rowData={data}
pagination
paginationPageSize={15}
rowSelection={this.state.rowSelection}
defaultColDef={this.state.defaultColDef}
enableFilter
enableCellChangeFlash
getRowHeight={this.state.getRowHeight}
onGridReady={this.onGridReady} />
</div>
</div>
);
}
编辑:我怀疑发生了所有事情,网格合法不知道 onGridReady 中的宽度,因为 dom 尚未完成加载,但是其他所有内容都已初始化。如果我这样做:setTimeout(() => this.gridApi.sizeColumnsToFit(), 500);
在 onGridReady(params) {...} 中它会起作用,但会有延迟,并且并非每个人的浏览器都以相同的速度运行。处理这个的任何范例?