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