#reactjs #ag-grid #ag-grid-react
#reactjs #ag-grid #ag-grid-реагировать
Вопрос:
Я пытаюсь вернуть данные строки при щелчке по ячейке в ag-Grid. Я определил следующий компонент, который я передаю в cellRendererFramework
показанный ниже.
import { ICellRendererParams } from "ag-grid-community";
import * as React from "react";
import { CellValue } from "./ClickableCell.style";
export default class ClickableCell extends React.Component<ICellRendererParams> {
public render() {
return (
// this works when the clickable cell is clicked
// but i'm trying to return this data to the component that will be rendering the grid
<div onClick={() => console.log(this.props.data)}>
{this.props.value}
</div>
);
}
}
Следующее находится в компоненте, который определяет заголовок столбца и данные строки.
const headers = [
{ headerName: "Name", field: "name", cellRendererFramework: ClickableCell },
{ headerName: "Age", field: "age" },
];
Как я могу получить данные щелкаемой строки в этом компоненте, где определены заголовки? Спасибо!
Редактировать:
Я добавил несколько рабочую версию кода: https://codesandbox.io/s/7qlvyk901
Комментарии:
1. предоставьте ссылку на plunk для вашей проблемы — чтобы поиграть с ней и решить ее
2. @Paritosh Я добавил это в исходное сообщение, но по какой-то причине сетка, похоже, отображается неправильно. Основная идея того, чего я пытаюсь достичь, все же есть.
Ответ №1:
Почему вы не используете обработчики событий ag-grids, в данном случае событие onCellClicked:
<AgGridReact
onCellClicked={this.onCellClicked}
columnDefs={this.props.Headers}
rowData={this.props.Data}
/>
Любое событие ячейки предоставит вам следующие параметры:
- столбец: столбец
- colDef: ColDef
- значение: любое
Ответ №2:
Я не работал с Ag-Grid, но я бы вызвал событие ClickableCell
и заставил отца обработать это событие.
export default class ClickableCell extends React.Component<ICellRendererParams> {
public render() {
return (
<div onClick={() => this.props.onEvent(this.props.data)}>
{this.props.value}
</div>
);
}
}
Затем в родительском компоненте я бы определил функцию для обработки этого события и сохранения, например, в состоянии.
handleEvent = data => {
console.log(data);
this.setState({ data });
};
И передайте эту функцию через props, где вы вызываете этот компонент. Если дело только в том, что const
вы также должны передавать реквизиты, нет?
<ClickableCell data={this.state.data} value={?} onEvent={this.handleEvent)}