【发布时间】:2016-08-10 07:50:41
【问题描述】:
我在对 codepen 做出反应时遇到的另一个奇怪错误。
我正在尝试将 api 响应呈现为 <h2>,但不知何故我无法呈现每个属性。
render: function () {
return (
<div className="weather-card">
<h1>Weather For:</h1>
<h2>{this.state.data.name}, {this.state.data.sys.country}</h2>
<h2>{this.state.data.main.temp}</h2>
<h2>{this.state.data.weather[0].main}</h2>
</div>
)
}
仅渲染this.state.data.name 没有问题,例如但如果它是一个更深的对象,它会显示“未捕获的类型错误:无法读取未定义的属性‘国家’”...
但我可以将这个完全相同的属性记录到控制台。
任何人的想法?
这里还有codepen:http://codepen.io/rasmus/pen/aNGRJm
编辑:我通过将不同的属性分配为它们自己的状态属性来使其工作,如下所示:
success: (data) => {
self.setState({
city: data.name,
temp: data.main.temp,
weather: data.weather[0].main,
isLoading: false
});
console.log(self.state.data.main.temp)
},
但这有点hacky...
【问题讨论】:
-
this.state.data不是一个对象。它是一个数组。正确的语法是this.state.data[0] -
需要401授权
-
是的,不知何故发生在 15 分钟前
-
问题似乎出在您的数据结构中...我更改了 URL(JSON) 并且怀疑它运行:codepen.io/DoubleU23/pen/dMerOg?editors=0010(尽管仅在控制台打开的情况下,但这似乎是代码笔错误?)
-
现在发现了导致 401 的错误。现在 api 调用再次起作用了。
标签: javascript json reactjs openweathermap