【发布时间】:2016-07-03 19:36:20
【问题描述】:
我最近开始使用 React.js,并一直在尝试构建一个简单的天气应用程序。 GET 请求没有问题,因为控制台正在打印从 OpenWeatherMap API 接收到的 JSON 字符串,但是将 JSON 分配给局部变量然后访问其属性似乎存在问题。
getInitialState : function(){
return (
{weatherdata: null }
);
},
componentWillMount : function(){
HttpService.get()
.then(function(jsondata){
console.log(jsondata);
this.setState({weatherdata : jsondata});
}.bind(this));
},
控制台给了我 2 个错误,反应开发工具拒绝加载: 未捕获的类型错误:无法读取 null 的属性 'main'
Uncaught (in promise) TypeError: Cannot read property '_currentElement' of null(...)
第一个指向我的行
React.createElement(今天,{ temp: this.state.weatherdata.main.temp,
这是渲染函数内部返回的sn-p
return(
<div>
<Today temp={this.state.weatherdata.main.temp}
windSpeed={this.state.weatherdata.wind.speed}
windAngle={this.state.weatherdata.wind.deg}
icon={this.state.weatherdata.weather[0].icon}
iconID={this.state.weatherdata.weather[0].id}
iconDesc={this.state.weatherdata.weather[0].description} />
</div>
);
现在,如果我直接将所有数据粘贴到 weatherdata 对象中,它似乎可以正常工作。
已尝试 JSON.parse(),但这似乎无法解决问题。任何帮助将不胜感激。
【问题讨论】:
-
嗯,你得到了初始状态 null,但是组件也被渲染为 null 状态,所以你在渲染 null 状态下访问这会导致错误。
标签: javascript json reactjs