React-data-grid:创建基于另一列的列

Coi*_*_op 13 reactjs react-data-grid

在react-data-grid中,如何创建显示另一列值的列?

我有一个包含以下内容的对象数组:

{
    id: 3,
    latitude: 42.101231231,
    longitude: -81.123132
}
Run Code Online (Sandbox Code Playgroud)

我的列定义是这样的:

    this.columns = [
            { key: 'id', name: 'ID' },
                //The coordinates key for this column doesn't exist
            { key: 'coordinates', name: 'Coordinates', formatter: coordinatesFormatter  }
        ];
Run Code Online (Sandbox Code Playgroud)

格式化程序:

const coordinatesFormatter = React.createClass({
  render() {
    return (<div>{latitude}, {longitude}</div>);
  }
});
Run Code Online (Sandbox Code Playgroud)

在格式化程序中,如何访问行上的纬度和经度属性以便连接它们?

据我所知,格式化程序只能访问其单元格的值this.props.value,而无法访问该行的整个对象.

Coi*_*_op 7

事实证明这是组件的限制.这里记录了一个解决方法:https://github.com/adazzle/react-data-grid/issues/42

它涉及添加getRowMetaData: (row) => row到列定义.这将填充this.props.dependentValues格式化程序组件.

这感觉有点像黑客,有没有更好的方法来访问格式化程序中的行数据?

更新

找到了稍微好一点的方法.在rowGetter方法中,在行上设置您需要的任何额外值,以便您可以简单地按键分配它们.

rowGetter(i) {
  let row = this.props.rows[i];
  row.coordinates = row.latitude + ', ' + row.longitude
  return row;
}

<ReactDataGrid rowGetter={this.rowGetter} ... />
Run Code Online (Sandbox Code Playgroud)