reactjs - 反应如何渲染单个元素,该元素在表格行中具有不同的多个子元素
问题描述
我是 React 的新手。我有以下代码块,该代码块被返回并发送到组件以在 html 表中呈现。目前我正在使用类似下面的东西。有没有更好的办法
bodyItems = sorted.map((data) => [
data.employerName,
data.sectors.map((sector) => <div>{sector.name}</div>),
data.sectors.map((sector) => (
<div>
{sector.assignedLearners > 0
? `${sector.assignedLearners} learners`
: 'Unassigned'}
</div>
)),
data.lastModified
]
渲染为:
bodyItems.map((entry, rowIndex) => (
<tr key={rowIndex}>
{entry.map((cell, colIndex) => (
<td key={colIndex}>{cell}</td>
))}
</tr>
))
任何人都可以帮助如何在组件中单独呈现扇区的每个 div。
预期输出:
<tr>
<td>Employer Name</td>
<td>
<div>Sector 1</div>
<div>Sector 2</div>
</td>
<td>
<div>20 Learners</div>
<div>10 learners</div>
</td>
<td>
<!-- ... additional properties-->
</td>
</tr>
谢谢
解决方案
你是说你想把你映射的每个片段渲染data.sectors
成它自己的片段<td>
吗?所以你得到了这样的表结构?
<tr>
<td>Employer Name</td>
<td>
<div>Sector 1</div>
<div>2 learners</div>
</td>
<td>
<div>Sector 2</div>
<div>Unknown</div>
</td>
<!-- ... additional sectors -->
</tr>
如果是这样,您需要展平使用 创建的数组data.sectors.map
,这样您就不会得到嵌套数组。...
假设您的项目支持它,您可以使用扩展运算符 ( ) 完成此操作。
bodyItems = sorted.map((data) => [
data.employerName,
...data.sectors.map((sector) => (
<>
<div>{sector.name}</div>
<div>
{sector.assignedLearners > 0
? `${sector.assignedLearners} learners`
: 'Unassigned'}
</div>
</>
))
])
或者,您可以使用flatMap
.
bodyItems = sorted.flatMap((data) => [
data.employerName,
data.sectors.map((sector) => (
<>
<div>{sector.name}</div>
<div>
{sector.assignedLearners > 0
? `${sector.assignedLearners} learners`
: 'Unassigned'}
</div>
</>
))
])
推荐阅读
- c# - 在C#中找到k个最近的邻居
- discord.py - 设置频道 discord.py bot。我不知道如何执行此功能
- android - 如何读取 NFC Beam 和标签?
- python - Python 创建 __init__.py 以指向正确的子包
- python - 如何将破折号托管的网页变成单个静态 html 页面?
- java - Java:For循环不显示所有输出数字
- android - react native 中是否有用于 instagram auth implimentation 的 NPM 包?(Expo)
- arrays - AutoHotkey:数组和对象范围
- sql - 使用联接过滤查询未返回正确的结果
- python-2.7 - Python pandas 在给定条件下写入 excel