React・TypeScript・Material-UI(MUI)で、TableのComponentを作成する方法

MUI_React_Table

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、React・TypeScript・Material-UI(MUI)で、TableのComponentを作成する方法について解説していきます。

Material-UI(MUI)で、TableのComponentを作成する方法

React・TypeScript環境でのTableのComponent作成に、Material-UI(MUI)のTable, TableHead, TableRow, TableCell, TableBody の5つを利用します。

Table Componentの要件定義とComponent導入イメージ

今回作成する Table Component の要件定義は、次のとおりになります。

  1. 1行目は、theadで、カラム名を表示する。
  2. 2行目以降は、tbody で、RecodeData (TableData)を表示する。

Component導入イメージは、次のようなSimpleな TableList になります。

Table Component のSampleCode

Table Component の SampleCode は、次のとおりです。

// import React from "react";
import {
  Table,
  TableHead,
  TableRow,
  TableCell,
  TableBody,
} from "@mui/material";

// 行(Row)のDataType
export interface RowDataType {
  [key: string]: any;
}

// Propsの型定義
interface PropsType {
  columnKeyList: string[];
  rowDataList: RowDataType[];
}

// TableのComponent => 縦型(Column_Key)のTableList
const TableList = (props: PropsType) => {
  // props.columnKey
  console.log("TableList_Props", props);
  const columnKeyList = props.columnKeyList;
  const rowDataList = props.rowDataList;
  return (
    <Table>
      <TableHead>
        <TableRow>
          {columnKeyList.map((key, index) => {
            return <TableCell key={index}>{key}</TableCell>;
          })}
        </TableRow>
      </TableHead>
      <TableBody>
        {rowDataList.map((recode, index) => (
          <TableRow key={index}>
            {
              // Recode(Object) の Key と ColumnKey が一致する場合は、それを表示する
              columnKeyList.map((key, index_2) => {
                if (recode.hasOwnProperty(key)) {
                  return <TableCell key={index_2}>{recode[key]}</TableCell>;
                }
              })
            }
          </TableRow>
        ))}
      </TableBody>
    </Table>
  );
};

export default TableList;

親コンポーネントからは、次のようにして、Table Component を使います。

{/* Table_Component */}
<TableList
  columnKeyList={["email", "id", "password"]}
  rowDataList={[
    { email: "robotama@gmail.com", id: 1, password: "robotama" },
    { email: "robotama@gmail.com", id: 2, password: "robotama2" },
    { email: "robotama@gmail.com", id: 3, password: "robotama3" },
  ]}
/>

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

React関連の書籍

プログラミング学習・エンジニア転職関連の情報

自宅で現役エンジニアから学べる『TechAcademy』 (エンジニア転職保証)

『GEEK JOBキャンプ』スピード転職コース(無料)

【IT道場】入校時0円! 就職目的プログラミングスクール

エンジニア転職なら100%「自社開発」求人に強い【クラウドリンク】

『techgym』 (Python特化・無料)

最近の投稿