我正在获取坐标,但“数据”的状态未更新

时间:2020-08-06 01:47:25

标签: javascript reactjs api weather

我正在尝试制作一个简单的反应天气应用程序,该应用程序使用地理位置方法来获取用户的当前位置。我希望api等待显示,直到它检索到它们的坐标为止。它获取我的坐标和数据,但不会更新“数据”值的状态。也许我没有指出正确的键/值之类的东西。

Code Sandbox
Data is retrieved

1 个答案:

答案 0 :(得分:0)

您的请求工作正常,只是无法正确解析响应。如果您在控制台中查看,则可以看到数据响应是一个包含名为data的数组的对象。您正在尝试将城市值分配给根对象中不存在的属性,而是数据数组中包含的对象中不存在的属性。

尝试更改此内容:

const data = await api_call.json();

this.setState({
  latitude: latitude,
  longitude: longitude,
  city: data.city_name,
  data: data,
  isLoaded: true
});

对此:

const {data} = await api_call.json();

this.setState({
  latitude: latitude,
  longitude: longitude,
  city: data[0].city_name,
  data: data[0],
  isLoaded: true
});

尝试处理data数组中的0个或1个以上的对象也是明智的。


这一行也值得一提:

const {data} = await api_call.json();

称为object destructuring,与执行此操作相同:

let data = await api_call.json();
data = data.data;
相关问题