Я изо всех сил пытаюсь перевести свои данные из запроса на выборку в состояние моего контейнера
Мой запрос на выборку хранится в 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, как вы, наверное, заметили.
С искренней благодарностью,
Фил