【发布时间】:2019-04-01 09:39:20
【问题描述】:
我正在发出一个 JSON 请求,它返回一个 JSON 对象。我想将数据移交给组件函数以进行显示,但是当我这样做时,它给了我错误:
无法读取未定义的属性“名称”
我已经在下面总结了,包括函数的完整代码也附上。
JSON:
http://api.openweathermap.org/data/2...c3ca2d4736dcfe
我将以上所有内容存储在状态中,然后将其作为道具传递:
<WeatherCard data={this.state.weatherdata} />
然后我可以在函数中记录道具,我得到:
Code:
{cod: "200", message: 0.0081, cnt: 5, list: Array(5), city: {…}}
city: {id: 2643743, name: "London", coord: {…}, country: "GB", population: 1000000}
cnt: 5
cod: "200"
list: (5) [{…}, {…}, {…}, {…}, {…}]
message: 0.0081
__proto__: Object
我也可以记录 props.data.city:
Code:
{id: 2643743, name: "London", coord: {…}, country: "GB", population: 1000000}
coord: {lat: 51.5085, lon: -0.1258}
country: "GB"
id: 2643743
name: "London"
population: 1000000
__proto__: Object
所以你会认为我可以通过 props.data.city.name 来获取城市名称,但不是。我得到无法读取未定义的属性“名称”。
完整代码:
import React, { Component } from 'react';
import './App.css';
import WeatherCard from './components/WeatherCard'
const config = {
API: "http://api.openweathermap.org/data/2.5/forecast?q=London,uk&units=metric&cnt=5&APPID=",
API_KEY: process.env.REACT_APP_OPEN_WEATHER_MAP_API_KEY
}
class App extends Component {
constructor() {
super()
this.state = {
error: null,
weatherdata: "",
isLoaded: false
}
}
componentDidMount() {
fetch(config.API + config.API_KEY)
.then( result => result.json() )
.then (
(result) => {
this.setState({
weatherdata: result,
isLoaded: true
})
},
(error) => {
this.setState({
isLoaded: false,
error: error
})
}
)
}
render() {
return (
<div className="App">
<WeatherCard data={this.state.weatherdata} />
</div>
);
}
}
export default App;
------
import React from 'react';
function WeatherCard(props) {
console.log(props.data.city.name) <---- this fails
return (
<div>
</div>
)
}
export default WeatherCard
【问题讨论】:
标签: javascript json reactjs