ReactJS:无法将 api 响应呈现到 h2 标记中,但可以将其记录到控制台
ReactJS: can't render api response into h2 tag but can log it to console
我在 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
没有问题,例如但如果它是一个更深的对象,它会说 "Uncaught TypeError: Cannot read property 'country' of undefined" ...
但我可以将完全相同的 属性 记录到控制台。
有人知道吗?
代码笔也在这里: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)
},
但这有点老套...
我看过你的代码笔,但我没有遇到任何问题。
进行了两次更改才能使其正常工作:
- 更改了您的
setState()
(在您的 Ajax 调用中)以包含 data: data
。确保您将完整(引用)数据对象放入状态。
- 更改了渲染代码以包含
this.state.data.sys.country
而且渲染得很好,带有国家/地区。
这里是link to edited codepen。
(希望这个 link 有效)
我在 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
没有问题,例如但如果它是一个更深的对象,它会说 "Uncaught TypeError: Cannot read property 'country' of undefined" ...
但我可以将完全相同的 属性 记录到控制台。
有人知道吗?
代码笔也在这里: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)
},
但这有点老套...
我看过你的代码笔,但我没有遇到任何问题。
进行了两次更改才能使其正常工作:
- 更改了您的
setState()
(在您的 Ajax 调用中)以包含data: data
。确保您将完整(引用)数据对象放入状态。 - 更改了渲染代码以包含
this.state.data.sys.country
而且渲染得很好,带有国家/地区。
这里是link to edited codepen。 (希望这个 link 有效)