【问题标题】:How to retrieve data from date in weather api?如何从天气api中的日期检索数据?
【发布时间】:2019-09-07 12:24:41
【问题描述】:

我正在从事 Reactjs 天气项目并从 apixu.com 检索数据,该网站包含当前和预报天气的所有详细信息。

我能够检索天气应用程序所需的几乎所有数据,日期除外,即从今天的日期到 5 天的预报。我不知道如何获得日期,做了很多试验,但都是徒劳的。因此,预计会有一些解决方案。提前致谢。

  1. 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}/>
  1. 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 个参数

  1. 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”中没有获取数据

【问题讨论】:

    标签: reactjs api


    【解决方案1】:

    当您为此 forecastdays 数组迭代两次时,因此您可以单次迭代并在 WeatherForecast 组件中传递您的 props 而不是迭代两次,如下所示

    forecastdays && forecastdays.map(o => <WeatherForecast day={o.day} date={o.date} />)
    

    请检查下面的代码 sn-p 和工作 stackblitz 演示。

    class ForecastDays extends Component {
      constructor() {
        super();
        this.state = {
          location:data.location.name,
          forecastdays: data.forecast.forecastday
        };
      }
      render() {
        const {forecastdays} = this.state;
        return (
          <div>
            <h1>City :- {this.state.location}</h1>
            {  
              forecastdays && forecastdays.map(o => <WeatherForecast day={o.day} date={o.date} />)
            }
          </div>
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 2019-05-28
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      相关资源
      最近更新 更多