javascript - React 无法通过 prop 数组映射
问题描述
我获取一个 api,componentDIdMount()
然后将 json 存储到一个状态,然后我将该状态作为道具传递,除了数组之外,我没有问题显示数据。
<Component details={this.state.details} />
json:
{
"adult": false,
"backdrop_path": "/qonBhlm0UjuKX2sH7e73pnG0454.jpg",
"belongs_to_collection": null,
"budget": 90000000,
"genres": [
{
"id": 28,
"name": "Action"
},
{
"id": 878,
"name": "Science Fiction"
},
{
"id": 35,
"name": "Comedy"
},
{
"id": 10751,
"name": "Family"
}
]
}
然后我尝试映射流派:
<div className={style.genre}>
{details.genres.map(g => (
<span key={g.id}>{g.name}</span>
))}
</div>
但后来我明白Cannot read property 'map' of undefined
了,我不知道为什么会这样,因为我能够做到details.budget
解决方案
它试图在您从 api 获得结果之前读取数据。所以把map函数写成
{details&&details.genres&&details.genres.map(g => (
<span key={g.id}>{g.name}</span>
))}
在 react 中,最初安装组件时,render()
会调用函数,然后componenentDidMount()
调用函数来获取数据。所以最初details
是空的。所以你需要写条件。
推荐阅读
- c++ - (cin >> int x ) 显示错误。为什么不能在cin之后声明变量
- javascript - 显示更多/显示更少多个列表不起作用
- c# - 了解每个 MVVM 组件
- java - 无法从任何存储库 org.apache.maven.plugins:maven-resources-plugin:pom:2.3 中找到工件
- python - TKinter - 无法更新文本小部件
- python - 安装neural_render_pytorch 失败
- .net - 无法跟踪实体类型的实例,因为跟踪了具有相同键值的另一个实例
- python - 使用 chaquopy 的 android studio 不支持 Python 模块
- c++ - 如何使 std::vector 在 Boost.Hana 中成为 Applicative 而不先使其成为 Monad?
- ios - Vuejs网站:用于自动滚动垂直的scrollTop在iOS Safari中不起作用