我正在努力将我的数据从获取请求中获取到我的容器状态
我的 fetch 请求存储在 api.js 中,看起来像这样 - 它从一个很好的常量中检索密钥:-
import { openWeatherKey } from './constants';
const getWeather = async() => {
const base = "https://api.openweathermap.org/data/2.5/onecall";
const query = `?lat=52.6&lon=-2.2&exclude=hourly,daily&appid=${openWeatherKey}`;
const response = await fetch(base + query);
const data = await response.json();
return data;
}
export { getWeather };
我的容器看起来像这样:-
import React, { Component } from "react";
import './weather.css';
import { getWeather } from './api';
class Spy extends Component {
constructor() {
super()
this.state = {test(){return "this is a test"}}
}
render() {
return (
<div id="spy-weather" className="app-border">
<h3 className="spy-name">Weather at { this.props.location } {this.state.test()}</h3>
</div>
)
}
}
(() => {
getWeather().then(data => {
console.log(data);
})
})();
export { Spy as Weather };
我有一个 IIFE 发出请求并将结果打印到控制台。您可以在上面的类声明和导出语句之间看到这一点。
这是控制台的结果 - 请求工作正常
{lat: 52.6, lon: -2.2, timezone: "Europe/London", timezone_offset: 3600, current: {…}}
current: {dt: 1594401262, sunrise: 1594353486, sunset: 1594412995, temp: 289.05, feels_like: 286.49, …}
lat: 52.6
lon: -2.2
timezone: "Europe/London"
timezone_offset: 3600
__proto__: Object
我无法做到的是使用已解决的承诺中的数据设置状态。我尝试了各种方法,包括我见过的一些不起作用的解决方案。
如何在容器中放置和运行该函数,然后使用数据更新状态?
你可能知道,我对 React 还是很陌生。
以诚挚的谢意,
菲尔