[英]how to map deeply nested objects in table with appropriate columns with rowspans in react.js with dynamic data?
我想在表中输入 map 数据,以便我应该得到如表所示的结果。 如果该类别中有子类别,则类别数据应跨行。 同样,子类别应根据类别和子子类别跨越。 任何人都可以在 React.js 中写下 function 到 map。 我提供 JSON 供参考,如果您相应地修改 JSON 就可以了。 这是 JSON。
[
{
"category_id": 6,
"parent_id": null,
"name": "Western Wear",
"slug": "western-wear",
"sort_order": 0,
"subCategoryData": [
{
"category_id": 7,
"parent_id": 6,
"name": "Jumpsuite and Rompers",
"slug": "jumpsuite-and-rompers",
"sort_order": 0,
"subSubCategoryData": [
{
"category_id": 10,
"parent_id": 7,
"name": "Rompers",
"slug": "rompers",
"sort_order": 0
},
{
"category_id": 11,
"parent_id": 7,
"name": "Jumpsuite",
"slug": "jumpsuite",
"sort_order": 0
}
]
},
{
"category_id": 8,
"parent_id": 6,
"name": "Dresses",
"slug": "dresses",
"sort_order": 0,
"subSubCategoryData": [
{
"category_id": 9,
"parent_id": 8,
"name": "Dress",
"slug": "dress",
"sort_order": 0
}
]
}
]
},
{
"category_id": 7,
"parent_id": 6,
"name": "Jumpsuite and Rompers",
"slug": "jumpsuite-and-rompers",
"sort_order": 0,
"subCategoryData": [
{
"category_id": 10,
"parent_id": 7,
"name": "Rompers",
"slug": "rompers",
"sort_order": 0,
"subSubCategoryData": []
},
{
"category_id": 11,
"parent_id": 7,
"name": "Jumpsuite",
"slug": "jumpsuite",
"sort_order": 0,
"subSubCategoryData": []
}
]
},
{
"category_id": 8,
"parent_id": 6,
"name": "Dresses",
"slug": "dresses",
"sort_order": 0,
"subCategoryData": [
{
"category_id": 9,
"parent_id": 8,
"name": "Dress",
"slug": "dress",
"sort_order": 0,
"subSubCategoryData": []
}
]
},
{
"category_id": 9,
"parent_id": 8,
"name": "Dress",
"slug": "dress",
"sort_order": 0,
"subCategoryData": []
}
]
<table className="admin-table">
<thead className="tbl-head">
<tr className="tbl-head-raw">
{/* <th>Gender</th> */}
<th>Category</th>
<th> Sub-Category</th>
<th> Sub-Sub-Category</th>
<th>Created on<br />Updated on</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{data.map((category, idx) => <tr>
{/* <td rowSpan={12}>Women</td> */}
<td>{category.name}</td>
{<td rowSpan={category.subCategoryData[0]?.subSubCategoryData?.length}>{
category.subCategoryData[0]?.name
}</td>}
{/* <td>{category.subSubCategoryData?.[0]?.name}</td> */}
<td>{'updated at'}</td>
<td>{category.slug}</td>
<td>
<label className="switch">
<input type="checkbox" />
<span className="slider round" />
</label>
</td>
<td className=" edit-view-icon flex">
<div className="edit-icon">
<SVG name="#icon-edit" />
</div>
<div className="view-icon">
<SVG name="#icon-eye" />
</div>
</td>
</tr>)}
</tbody>
</table>
由于您的数据数组包含三个级别,因此您可以像这样将您的数组分成 3 个级别。
data.map(level1 =>{
<td>{level1.name}</td>
<td>{level1.slug}</td>
......
(level1.subCategoryData.length > 0)?
level1.subCategoryData.map(level2 =>{
<td>{level2 .name}</td>
<td>{level2.slug}</td>
......
(level2.subCategoryData.length > 0)?
level2.subCategoryData.map(level3 =>{
<td>{level3 .name}</td>
<td>{level3 .slug}</td>
......
})
: null
})
: null
)}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.