【发布时间】:2019-09-07 12:24:41
【问题描述】:
我正在从事 Reactjs 天气项目并从 apixu.com 检索数据,该网站包含当前和预报天气的所有详细信息。
我能够检索天气应用程序所需的几乎所有数据,日期除外,即从今天的日期到 5 天的预报。我不知道如何获得日期,做了很多试验,但都是徒劳的。因此,预计会有一些解决方案。提前致谢。
- App.js
这段代码从api获取数据
const api_call2 = await fetch(`https://api.apixu.com/v1/forecast.json?` +
`key=${API_KEY2}&q=${city}&days=5`);
const data2 = await api_call2.json();
这里的状态设置为forecastdays
forecastdays: data2.forecast.forecastday
状态已定义
<ForecastDays forecastdays={forecastdays}/>
- index.js
这里的 forecastdays 是通过 props 调用的
export class ForecastDays extends Component {
constructor(props) {
super(props);
this.state = {}
}
render() {
const { forecastdays} = this.props;
return (
<div>
{
forecastdays && forecastdays.map((day, idx) => {
return <WeatherForecast day={day.day} key={idx} />
})
},
{
forecastdays && forecastdays.map((date, idy) => {
return <WeatherForecast date={date.date} key={idy} />
})
}
</div>
)
}
}
在这里你可以看到上面的日期和日期是在 WeatherForecast.js 文件中映射和定义的 2 个参数
- WeatherForecast.js
export class WeatherForecast extends Component {
constructor(props) {
super(props);
this.state = {};
}
render() {
const { day, date } = this.props;
// DATE first returns undefined and then loads data
console.log('DATE', date)
if(!day) return null;
return (
<div>
<MDBCardBody className="forecast-body">
<MDBCardHeader className="forecast-header">
<div className="inner-container">
<h2>{date}</h2> // Doesn't display date
<img src={day.condition.icon} />
<div className="text">{day.avgtemp_c}°C</div>
<div className="muted-text">{day.condition.text}</div>
</div>
</MDBCardHeader>
</MDBCardBody>
<br/>
</div>
)
}
}
export default WeatherForecast
我在“day”对象中获取了数据,但在“date”中没有获取数据
【问题讨论】: