
<Route path="/table">
<TablePage />
</Route>
export default function Sidebar() {
const links = [
//...
{ label: "Table", path: "/table" },
];
Parent (component)
const data = [
{ name: "Orange", color: "bg-orange-500", score: 5 },
{ name: "Apple", color: "bg-red-500", score: 5 },
{ name: "Banana", color: "bg-yellow-500", score: 5 },
{ name: "Lime", color: "bg-green-500", score: 5 },
];
=>(props : fruits)
=>
Table (component)
Inside TablePage , make an data array. Use that data array as props.
function TablePage() {
const data = [
{ name: "Orange", color: "bg-orange-500", score: 5 },
{ name: "Apple", color: "bg-red-500", score: 5 },
{ name: "Banana", color: "bg-yellow-500", score: 5 },
{ name: "Lime", color: "bg-green-500", score: 5 },
];
return (
<div>
<Table data={data} />
</div>
);
}
Inside Table, Use that data as props.
export default function Table({ data }) {
return <div>{data.length}</div>;
}
์ด๋ค data๋ฅผ table์ ๋ด์๋ ๊ทธ ์ ๋ณด๊ฐ ๋ณด์ด๊ฒ table ์ ์ฌ์ฌ์ฉ ํ ์ ์์ด์ผํ๋ค.
Inside 'TablePage'
const config = [{ label: "Name" }, { label: "Color" }, { label: "Score" }];
return (
<div>
<Table data={data} config={config} />
</div>
);
Inside 'Table'
function Table({data, config}){
const renderedHeaders = config.map((column)=>{
return <th>{column.label}</th>
})
}
return (
<thead>
<tr>{renderedHeaders}</tr>
</thead>
)
Inside 'TablePage'
const config =
[
{label:'Name',
render:(fruit)=> fruit.name
},
{
label:'Color',
render:(fruit) => <div className={`p-3 m-2 ${fruit.color}`}></div>
}
]
Inside 'Table'
const renderedRows = data.map((fruit)) =>{
return(
<tr>
<td>{config[0].render(fruit)}<td>
<td>{config[1].render(fruit)}<td>
<td>{config[2].render(fruit)}<td>
</tr>
)
}
Inside 'Table'
const renderedRows = data.map((fruit)=>{
const renderedCells = config.map((config)=>{
return (
<td>{config.render(fruit)}<td>
)
})
return (
<tr>{renderedCells}</tr>
)
})
Inside 'TablePage'
const ketFn = (fruit) =>{
return fruit.name
}
return (
<Table keyFn={keyFn] />
)
Inside 'Table'
return (
<tr key={keyFn}></tr>
)