reactjs - 反应无法使用地图访问道具
问题描述
所以我有一个带有 props.tracks 的 TrackList 组件,它是一个对象数组,但是当我尝试使用以下方法将其传递给 Track 组件时:
{this.props.tracks.map(track => {
return <Track track={track} key={track.id}/>
})}
我得到一个 TypeError: Cannot read property 'map' of undefined。
如果它们未定义,那么为什么它们会显示在 TrackList 组件中?
如果将曲目硬编码到 TrackList 中,那么我可以使用 .map() 访问它们不是问题
解决方案
提供的属性tracks
是undefined
或null
。为了防止在这种情况下出现错误,您有多种选择
- 使用 defaultProps
class YourComponent extends React.Component {
...
}
YourComponent.defaultProps {
tracks: [],
}
- 条件渲染
{this.props.tracks && this.props.tracks.map(
...
)}
- 设置默认值
{(this.props.tracks || []).map(
...
)}
最后一个选项可能是最没用的选项,因为该tracks
属性在所有其他地方都未定义。
推荐阅读
- javascript - 这个模拟计算万有引力和身体碰撞的方式是否有错误?
- javascript - 注册工作正常,但用户无法使用注册时使用的相同密码登录。可能是什么问题?
- linux - Linux temios 非规范 sys_call getch() 不起作用
- objective-c - NSURLSessionConfiguration 和 NSData 总是返回 nil
- vue.js - 根据卡片值更改 v-card 背景颜色
- python - 当我使用 selenium webdriver 在 VPS 上自动发布时,Facebook 锁定了帐户
- javascript - Angular - 按类别显示可观察列表
- javascript - 如何在 Python 中使用 selenium 将值永久保存在本地存储中
- java - 如何从适配器中的活动中调用元素
- python - 在数据框中找到最接近中位数的值