我知道有很多问题要求同样的事情,但这些答案似乎都不适用于我的具体案例,而且我已经在这里工作了几个小时但仍然无法理解。我正在关注WeatherApp的ReactJs教程。我从API调用中获取一个对象,如下所示:
{
current: {}
forecast:
forecastday:[ //
0: {...}
1: {...}
2: {...}
3: {...}
4: {...}
] //Array of five objects
location: {}
} //this object is part of a bigger response object
当我console.log(objectName.forecast.forecastday)
我回到阵列时,这意味着它实际上就在那里。
但是当我尝试
时var forecastData = props.forecast.data;
var days = forecastData.forecast.forecastday.map(function (day) {
//do something
});
它让我回到错误Uncaught TypeError: Cannot read property 'forecast' of undefined
。我也尝试过记录forecastData
,它回来就好了。 forecast
显然是存在的,除非我遗漏了一些非常明显的东西,否则我不知道发生了什么。
感谢。
答案 0 :(得分:0)
您很可能没有考虑初始状态,因为您的API调用是异步发生的,因此在组件的初始安装中可能未定义props.forecast.data
。
您可以这样做:
var days = forecastData
? forecastData.forecast.forecastday.map(function (day) {
//do something
})
: null;
首先检查forecastData
是否存在,如果确实存在,它将映射到forecastData.forecast.forecastday
数组。
如果forecastData不存在,那么该变量将呈现为空。