Here is code to display an HTML table in React. I assumed the first row to be a table header. This may not work for some cases where there may more than one table header. I kept the .css file simple.
import React from "react";
import "./DisplayTable.css";
const Table = (props) => {
let body = props.body;
let heading = props.heading;
return (
<table>
<TableHeader heading={heading} />
<tbody>
{body.map((row, index) => (
<TableRow key={index} row={row} />
))}
</tbody>
</table>
);
};
const TableRow = (props) => {
let row = props.row;
return (
<tr key={row}>
{row.map((val, index) => (
<td key={index}>{val}</td>
))}
</tr>
);
};
const TableHeader = (props) => {
let heading = props.heading;
if (heading) {
return (
<thead>
<tr>
{heading.map((head, index) => (
<th key={index}>{head}</th>
))}
</tr>
</thead>
);
}
};
const DisplayTable = (props) => {
// convert each row of data to an array of rows
const body = Object.entries(props.value).map(([key, value]) => {
return value.split(" ");
});
// take first row off to get table data
body.shift();
// get first row off to make table headings
const firstRow = props.value[0];
let heading;
if (firstRow) {
heading = firstRow.split(" ");
}
// make an array of strings
return <Table body={body} heading={heading}></Table>;
};
export default DisplayTable;
DisplayTable.css
td {
text-align: right;
}
Top comments (0)