arrays - 使用 JSX 映射数组
问题描述
我正在尝试map
通过嵌套Array
using JSX
。
这是Array
:
this.topics = [
{
id: 1,
name: 'first',
headings : [
{
id: 1,
url: 'https://media.w3.org/2010/05/sintel/trailer.mp4',
name: 'Sintel movie'
},
{
id: 2,
url: 'https://media.w3.org/2010/05/bunny/movie.mp4',
name: 'Bunny Movie'
},
{
id: 3,
url: 'https://techslides.com/demos/sample-videos/small.mp4',
name: 'Test page'
}
]
},
{
id: 2,
name: 'second',
headings : [
{
id: 1,
url: 'https://media.w3.org/2010/05/sintel/trailer.mp4',
name: 'Siddntel movie'
},
{
id: 2,
url: 'https://media.w3.org/2010/05/bunny/movie.mp4',
name: 'Bunnddy Movie'
},
{
id: 3,
url: 'https://techslides.com/demos/sample-videos/small.mp4',
name: 'Test ddpage'
}
]
}
];
JSX
到目前为止我提出的代码:
renderSidenav(){
return(
<Nav>
{this.topics.map(topic =>
<Dropdown eventKey="3" title="s" icon={<Icon icon="magic" />}>
{this.topics[topic].headings.map(heading =>
<div onClick = {() => this.handleSelect(heading.id)} key={heading.id}>
<Dropdown.Item style={{backgroundColor: '#E9F4E4'}} icon={<Icon icon="dashboard"/>}>
<div>{heading.name}</div>
</Dropdown.Item>
<Dropdown.Item divider style={{backgroundColor: 'white', height: '2px'}}/>
</div>
)}
</Dropdown>
)}
</Nav>
)
}
这是我得到的错误:
TypeError: Cannot read property 'headings' of undefined
我究竟做错了什么?
解决方案
只是做topic.headings.map
而不是this.topics[topic].headings.map
.
Map 函数返回项目,而不是数组中的位置/索引,因此您可以直接从topic
.
推荐阅读
- c# - MVC 核心,将根视图文件夹更改为 UI,出现“默认身份 UI 布局需要部分视图 '_LoginPartial'”错误
- c# - 从 .Net Core 3.0 预览版升级到 .Net Core 3.0 版本后启动时出错
- c# - 基于列表类型的属性对列表进行二分搜索
- javascript - 如何在javascript中停止减值为零
- laravel - 无法读取 Laravel Echo 中的事件
- gremlin - Gremlin - 使用 OR 步骤获取不同类型的连接顶点
- java - 我将复数提高到幂的方法有什么问题
- json - PL/SQL json_value 函数为大型 JSON 文档提供错误
- python - 多处理池 - 大多数工作人员已加载但仍处于空闲状态
- ssl - 负载平衡中 Google 管理的 SSL 证书的子域和定价