Я бы разделил функциональные компоненты для удобства чтения на три разных файла: ваш mainfile.js
, который имитирует ваш компонент класса Table
выше, файл playerstabledata.js
, который включает компонент PlayersTableData (), и файл playerstableheader.js
, который вводит PlayersTableHeader (); Теперь внутри mainfile.js
:
import React, { useState } from "react";
import PlayersTableHeader from "./playerstableheader.js";
import PlayersTableData from "./playerstabledata.js";
const Table = (props) => {
const [status, setStatus] = useState([
{ title: "Clients", view: 1, total: 20 },
{ title: "Returning Players", view: 3, total: 18 },
{ title: "New Players", view: 3, total: 20 },
{ title: "Pending Players", view: 4, total: 10 },
{ title: "Players who left", view: 3, total: 11 },
{ title: "Total Players", view: 15, total: 79 }
]);
return (
<div>
<table id="status">
<tbody>
<tr><PlayersTableHeader status={status} /></tr>
<PlayersTableData status={status} />
</tbody>
</table>
</div>
);
};
export default Table;
В playerstableheader.js
файла:
const PlayersTableHeader = ({status}) =>{
let header = Object.keys(status[0]);
return header.map((key, index) => {
<th key={index}>{key.toUpperCase()}</th>;
});
};
export default PlayersTableHeader;
В playerstabledata.js
:
const PlayersTableData = ({status}) => {
return status.map(({title, view, total}, index) => {
<tr key={index}>
<td>{title}</td>
<td>{view}</td>
<td>{total}</td>
</tr>
});
};
export default PlayersTableData;
Обратите внимание, как я я передаю состояние status
каждому компоненту. Надеюсь, это поможет!