let data = {};
await fetch(url).then((res) => res.json()).then(json => {
data = { temperature: json.main.temp }
})
return data;
Это что за дичь? Пусть будет
return fetch(url).then(r => r.json());
.
this.setState(() => {
return { weather: this.askForWeather.getNeededData() }
});
Засовываете промис в стейт. Что-то сомневаюсь, что так и было задумано. Меняйте на
this.askForWeather.getNeededData().then(weather => {
this.setState(() => ({ weather }));
});
<Main temperature={this.state.weather.temperature}/>
Пока weather имеет значение null, попытки прочитать свойства будут приводить к ошибке. Так что
{this.state.weather && <Main temperature={this.state.weather.main.temp} />}