您好,对于一个项目,我需要用户选择应在React Data Grid中显示的列。有些列可能是预设的,有些则可能会在以后添加。但是我尝试过,即使状态已相应设置并且没有错误显示,它也不能用于添加多个列
新列将由选择器选择,然后将其添加到表类的状态中。 如果尝试通过强制传递render方法的props传递它,但它也没有多次更新列。 我使用了不同/相同的键集。如果它是第一个新列,则将识别为相同。 我尝试调试它,是否有任何理由将nextColumns分类为未更改,但并没有使我更接近。
在render()中的state.columns
0: {key: "date", name: "Date"} ->Preset
1: {key: "date", name: "Date1"} ->Added and created
2: {key: "ffd", name: "Testfdg2"}->Added to state not created
3: {key: "test", name: "Test3"} ->Not created
4: {key: "test", name: "Test4"}
5: {key: "test", name: "Test5"}
6: {key: "test", name: "Test6"}
length: 7
__proto__: Array(0)
ComponentCall
<ReactDataGrid
columns={this.state.columns}
rowGetter={i => this.handleRowGetter(i)}
rowsCount={this.rowsCount()}
minHeight={500}
minColumnWidth={10}
onGridSort={(sortColumn, sortDirection)=>this.gridSort(sortColumn, sortDirection)}
toolbar={
<Toolbar enableFilter={true}
/>}
onAddFilter={this.handleFilterChange}
onClearFilters={this.handleOnClearFilters}
onRowDoubleClick={(click,row) =>{this.handleClick(click,row)}}
/>
所以目标是根据州创建所有列
如果需要更多代码,我很乐意提供
问候乔纳森
答案 0 :(得分:0)
答案 1 :(得分:0)
确定解决了
在行中的。 react-data-grid.js中的5804
if (!ColumnMetrics.sameColumns(this.props.columns, nextProps.columns,this.props.columnEquality) || nextProps.minWidth !== this.props.minWidth) {
var columnMetrics = this.createColumnMetrics(nextProps);
this.setState({ columnMetrics: columnMetrics });
}
this.props.columns与下一个props.columns相同,因此columnMetrics将不会更新。
在行中的。 6500在react-data-grid.js中
this.setupGridColumns = function () {
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0]:_this2.props;
var columns = props.columns;
if (_this2._cachedColumns === columns) {
return _this2._chachedComputedColumns;
}
更多_this2._cachedColumns与props.columns相同,因此将返回cachedComputedColumns
因此,没有对ColumnMetrics的实际更新->没有可视更新。即使道具和状态设置正确。
因此排除if和更改return语句将使您可以向表中添加新列