我App.js
在子组件的状态对象中显示信息时遇到问题。下面是相关部分。App.js
,WeatherDetail
是前面提到的组件,然后是来自 API 请求的响应。
应用程序.js
import React from "react";
import openweather from "../api/openweather";
import SearchBar from "./SearchBar";
import WeatherDetail from "./WeatherDetail";
class App extends React.Component {
state = { weather: [], daily: [] };
onSearchSubmit = async zip => {
const currentWeather = openweather.get("/data/2.5/weather", {
params: { zip }
});
const fiveDayForecast = openweather.get("/data/2.5/forecast", {
params: { zip }
});
const [weather, daily] = await Promise.all([
currentWeather,
fiveDayForecast
]);
this.setState({ weather: weather.data, daily: daily.data.list });
};
render() {
return (
<div>
<SearchBar onSubmit={this.onSearchSubmit} />
<WeatherDetail weather={this.state.weather} />
</div>
);
}
}
export default App;
WeatherDetail.js
const WeatherDetail = ({ weather }) => {
return (
<div>
<h1>Today</h1>
<h3>City: {weather.name}</h3>
<h5>Temperature:</h5>
</div>
);
};
>forecast:
base: "stations"
>clouds: {all: 75}
cod: 200
>coord: {lon: -82.54, lat: 40.7}
dt: 1553023267
id: 420031370
>main:
humidity: 45
pressure: 1030
temp: 44.22
temp_max: 46.99
temp_min: 41
name: "Elyria"
现在,weather.name
毫无问题地显示在视图中。如果我尝试获取任何比这更深的信息,我会收到一条错误消息,指出该属性未定义。例如,weather.main.temp
我认为我会如何获得温度,但它显示了该错误。weather.main
单独给出一个明显的错误,但它显示了我试图在消息中访问的对象。weather.main.temp
因此,当还说属性(主要)未定义时,我很困惑。我是在尝试错误地访问对象还是其他设置错误?