首页 > 解决方案 > 如何从主组件中导出 const

问题描述

我需要将我的数据常量导出到另一个文件。如果它是异步的,我怎么能做到这一点?(因为它,我无法将它从 getWeather 中取出并使其成为全球性的)。

这是代码:

getWeather = async (event) => {
  event.preventDefault();
  var city = event.target.elements.city.value;

  if (city) {
    const api_url = await fetch(`https://api.openweathermap.org/data/2.5/forecast?q=${city}&appid=${API_KEY}&units=metric`);
    const data = await api_url.json();

    var sunset = data.city.sunset;
    var date = new Date();
    date.setTime(sunset);
    var sunset_time = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();

    this.setState({
      temp: data.list[0].main.temp,
      city: data.city.name,
      country: data.city.country,
      pressure: data.list[0].main.pressure,
      sunset: sunset_time,
      error: undefined,
      latitude: data.city.coord.lat,
      longitude: data.city.coord.lon
    });
  } else {
    this.setState({
      temp: undefined,
      city: undefined,
      country: undefined,
      pressure: undefined,
      sunset: undefined,
      error: 'Please enter the city',
      latitude: undefined,
      longitude: undefined
    })
  }
}

标签: javascriptreactjs

解决方案


您可以像这样在页面顶部创建一个变量;让数据;然后当您的请求完成时,为您的变量 datas = blas 设置新值;

 let datas;

 getWeather = async (event) => {
  event.preventDefault();
  var city = event.target.elements.city.value;



if(city){
  const api_url = await 
  fetch(`https://api.openweathermap.org/data/2.5/forecast?q=${city}&appid=${API_KEY}&units=metric`);
  const data = await api_url.json();
  console.log(data)

  datas = data;

  var sunset = data.city.sunset;
  var date = new Date();
  date.setTime(sunset);
  var sunset_time = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();

  this.setState({
    temp: data.list[0].main.temp,
    city: data.city.name,
    country: data.city.country,
    pressure: data.list[0].main.pressure,
    sunset: sunset_time,
    error: undefined,
    latitude: data.city.coord.lat,
    longitude: data.city.coord.lon
  });
} else {
  this.setState({
    temp: undefined,
    city: undefined,
    country: undefined,
    pressure: undefined,
    sunset: undefined,
    error: 'Please enter the city',
    latitude: undefined,
    longitude: undefined
  })
}

export datas;

推荐阅读