javascript - 如何在垂直选项卡中呈现数据
问题描述
我需要使用 React 垂直选项卡呈现数据,我已经给出了我尝试过的代码以及来自 API 的数据。我不知道如何在里面循环<TabPanel>
。代码沙盒链接https://codesandbox.io/s/jovial-darkness-qob1n?file=/src/tab.js
<Tabs
defaultTab="vertical-tab-one"
vertical
className="vertical-tabs"
>
<TabList>
{subProducts.map((subProduct, index) => (
<Tab>{subProduct.subProductName}</Tab>
))}
</TabList>
{subProducts.map((subProduct, index) => (
<TabPanel className="tab-pane fade mt-4 show ">
{subProduct.bookingDetails.map((attr, i) => (
<>
<table id="customers">
<tbody>
<tr>
<td>{attr.name}</td>
<td>{attr.value}</td>
</tr>
</tbody>
</table>
</>
))}
</TabPanel>
))}
</Tabs>
API 输出:
subProducts: [
{
bookingDetails: [
{
name: "Birthday Decoration",
value: "YES"
},
{
name: "Photographer",
value: "NO"
}
],
subProductName: "Celebration"
},
{
bookingDetails: [
{
name: "Decoration",
value: "YES"
},
{
name: "Video",
value: "NO"
}
],
subProductName: "FamilY"
}
]
解决方案
在沙箱中,您尝试为数组bookingDetails
中的每个对象进行映射subProducts
,但在第二个对象中,subProducts
您有一个Details
属性,但没有bookingDetails
属性,因此bookingDetails
将是未定义的。
因此,您可能想更改Details
为bookingDetails
:
subProducts: [
{
bookingDetails: [
{
name: "Birthday Decoration",
value: "YES",
},
{
name: "Photographer",
value: "NO",
},
],
subProductName: "Celebration",
},
{
bookingDetails: [
{
name: "Decoration",
value: "YES",
},
{
name: "Video",
value: "NO",
},
],
subProductName: "FamilY",
},
];
如果 API 返回Details
而不是bookingDetails
在您的原始问题中返回,则相反。改变它,让它映射过来Details
:
所以subProduct.Details.map
代替subProduct.bookingDetails.map
.
点击时数据未正确显示是因为每个Tab
组件都需要有一个tabFor
与 a 的 prop 值对应 TabPanel
的tabId
prop 值。否则react-web-tabs
不知道什么时候显示什么内容。
对于这个例子,我使用了地图的索引并toString
在将它传递给道具之前调用它,因为 id 需要是一个字符串。但更自然的id
做法是id
在您的数据中包含字段并使用这些字段。
推荐阅读
- python - 计算时间间隔之间的行数
- java - 在 BufferedImage 上应用 FFT 给我一个 ArrayIndexOutOfBoundsException
- javascript - 在不同的行中调用 Trigger() 不起作用 - jquery
- qt - 通过 qtquickcontrols2-configuration 更改控件类型样式?
- php - 编辑表单忽略验证注释
- python - UnboundLocalError:分配前引用的局部变量“state_claim_ratio_df”
- xamarin - 使用 MvvmCross 在 Xamarin 表单中根据用户输入显示自定义字段
- powershell - PowerShell中密码的RegEx验证
- node.js - PhpStorm/WebStorm 终端显示旧 NPM 版本
- c# - 如何删除默认的 ASP.NET Core Identity 端点?