Подтвердить что ты не робот

React-data-grid: создать столбец, основанный на другом столбце

В grid-сетке response-data как создать столбец, который отображает значения из другого столбца?

У меня есть массив объектов, которые содержат что-то вроде следующего:

{
    id: 3,
    latitude: 42.101231231,
    longitude: -81.123132
}

Определение моего столбца таково:

    this.columns = [
            { key: 'id', name: 'ID' },
                //The coordinates key for this column doesn't exist
            { key: 'coordinates', name: 'Coordinates', formatter: coordinatesFormatter  }
        ];

Форматирование:

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

В форматировании, как мне получить доступ к свойствам широты и долготы в строке, чтобы объединить их?

Насколько я могу сказать, форматировщик имеет доступ к значению своей ячейки через this.props.value, не имея возможности получить доступ ко всему объекту для строки.

4b9b3361

Ответ 1

Оказывается, это ограничение компонента. Здесь описывается одна работа: 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} ... />