React - 如何处理材料 ui 的数据网格表的特定列的单元格单击?

Rub*_*ins 8 click reactjs

我正在使用名为 DataTable 的 Material ui 组件,并且我不知道如何检测特定列中任何单元格中的单击

这是我的表格,我想处理“操作”列中任何单元格中的单击: 在此输入图像描述

下面是我的组件代码:

import * as React from 'react';
import { DataGrid } from '@mui/x-data-grid';
import { PropTypes } from 'prop-types';

export default function DataTable({ rows, columns }) {
  return (
    <div style={{ height: 400, width: '100%' }}>
      <DataGrid
        rows={rows}
        columns={columns}
        pageSize={5}
        rowsPerPageOptions={[5]}
        checkboxSelection
      />
    </div>
  );
}

DataTable.propTypes = {
  rows: PropTypes.arrayOf(
    PropTypes.shape({
      conteudo: PropTypes.string,
      disciplina: PropTypes.string,
      curso: PropTypes.string,
      data: PropTypes.string,
    })
  ).isRequired,
  // eslint-disable-next-line react/forbid-prop-types
  columns: PropTypes.array.isRequired,
};
Run Code Online (Sandbox Code Playgroud)

Ahm*_*ınç 15

您可以通过将onCellClickprop 传递给您来处理任何列上的任何单击事件DataGrid,如下所示:

import { useState } from "react";
import { DataGrid } from "@mui/x-data-grid";

export default function DataTable({ rows, columns }) {
  const [finalClickInfo, setFinalClickInfo] = useState(null);

  const handleOnCellClick = (params) => {
    setFinalClickInfo(params);
  };

  return (
    <div style={{ height: 400, width: "100%" }}>
      <DataGrid
        rows={rows}
        columns={columns}
        pageSize={5}
        rowsPerPageOptions={[5]}
        checkboxSelection
        onCellClick={handleOnCellClick}
      />
      {finalClickInfo &&
        `Final clicked id = ${finalClickInfo.id}, 
        Final clicked field = ${finalClickInfo.field}, 
        Final clicked value = ${finalClickInfo.value}`}
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)

您可以从函数返回的值访问任何属性id,例如field、等。您可以查看此 stackblitz,了解此用法的实时工作示例。valueonCellClick