【发布时间】:2020-06-04 07:56:30
【问题描述】:
我使用了第 3 方 API 并将响应保存到一个状态,然后我将响应中的一个对象作为道具传递给另一个组件。
这是道具。
{
"count": 20,
"games": [
{
"id": 66947,
"game_title": "Zelda 64: Dawn & Dusk",
"release_date": "2019-09-22",
"platform": 3,
"developers": [
6043
]
},
{
"id": 49433,
"game_title": "Zelda II - The Adventure of Link",
"release_date": "2013-09-12",
"platform": 38,
"developers": [
6037
]
},
....etc...
]
}
我不知道如何通过映射来访问“游戏”数据。所以我想我会尝试简单地将值写入控制台,看看我是否在某个地方犯了一个愚蠢的错误。如果我使用此代码将道具写入控制台。
console.log(this.props.searchResults);
它会按照您的预期将所有内容写入控制台。但是,如果尝试使用此代码编写游戏数组,则会出现错误。
console.log(this.props.searchResults.games);
这是错误。
TypeError: this.props.searchResults is undefined
我最终要做的是尝试通过游戏数组映射并在浏览器中呈现标题,但如果我什至不能在控制台中编写标题,那么我显然有问题。我对 javascript 和 react 都很陌生,所以我很确定在迭代一个值为数组的对象键时,我缺少一些简单的东西。
我尝试的另一件事是首先将“游戏”数组发送到组件,但我遇到了同样的问题。
【问题讨论】:
-
也许你的 this.props.searchResults 在某些时候是未定义的?如果您添加检查以确保在访问游戏之前已定义 this.props.searchResults 会怎样?类似于: if (!!this.props.searchResults) {console.log(this.props.searchResults.games);}
-
运行 console.log(this,props.searchResults.count) 看看是否可行
-
@recidplayer 在传递给其他组件之前执行控制台并检查值是否存在或未定义...您可以在沙箱中分享您的代码吗?
-
@NickG 这行得通,让游戏数组写入控制台。
标签: javascript arrays reactjs react-props