如何为一个React-Data-Grid添加一个以上的新列?

时间:2019-04-03 11:25:02

标签: reactjs react-data-grid

您好,对于一个项目,我需要用户选择应在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)}}

    />

所以目标是根据州创建所有列

如果需要更多代码,我很乐意提供

问候乔纳森

2 个答案:

答案 0 :(得分:0)

来自docs

  

键:区分各列的唯一键

您需要为key使用不同的值。所以每个key是唯一的

答案 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语句将使您可以向表中添加新列