ReactJS:无法准备属性xxx的undefined

时间:2017-03-06 23:37:03

标签: javascript reactjs

我知道有很多问题要求同样的事情,但这些答案似乎都不适用于我的具体案例,而且我已经在这里工作了几个小时但仍然无法理解。我正在关注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显然是存在的,除非我遗漏了一些非常明显的东西,否则我不知道发生了什么。

感谢。

1 个答案:

答案 0 :(得分:0)

您很可能没有考虑初始状态,因为您的API调用是异步发生的,因此在组件的初始安装中可能未定义props.forecast.data

您可以这样做:

var days = forecastData
  ? forecastData.forecast.forecastday.map(function (day) {
    //do something
  })
  :  null;

首先检查forecastData是否存在,如果确实存在,它将映射到forecastData.forecast.forecastday数组。

如果forecastData不存在,那么该变量将呈现为空。