ReactのOpenWeatherの表示方法について
Open Weather APIを表示させたい。
ReactでOpen Weather APIを利用して表示させるWebアプリを作成しているのですが、以下のコードではうまく表示できないため、解決方法を教えて下さい。
APIからJSON文字列の取得はできており、検証モードでも確認できました。
エラーコードは以下の通りです。
data is not defined ReferenceError: data is not defined at Show
Reactのコードは以下の通り。
import React, { useEffect, useState } from 'react'
export const Show = () => {
const url = `https://api.openweathermap.org/data/2.5/weather?id=${City}&appid=${API_key}`
const [loading, setLoading] = useState(true)
useEffect(() => {
const weatherData = async () => {
let res = await getWeatherData(url);
setLoading(false)
console.log(res)
}
weatherData()
}, [])
const getWeatherData = () => {
return new Promise((resolve, reject) => {
fetch(url)
.then((response) => response.json())
.then((data) => resolve(data))
})
}
return (
<>
{loading ? (
<h1>ロード中</h1>
) : <>
<h1>データ取得済</h1>
<section>
<div class="location">東京</div>
{/* <div class="temp"><p>{data.main.temp}°F</p></div> */}
{/* <div class="description">{res.weather ? <p>{res.weather[0].main}</p>: null}</div> */}
{/* <div class="windSpeed">{res.wind ? <p>{res.wind.speed} HMP</p> : null}</div> */}
{/* <div class="windDeg">{res.wind ? <p>{res.wind.deg}</p> : null}</div> */}
{/* <div class="windGust">{res.wind ? <p>{res.wind.gust}</p> : null}</div> */}
</section>
</>
}
</>
)
}
取得してきたJOSN文字列は以下の通りとなります。
###要求後の応答内容となります。
{
"coord": {
"lon": 31.2007,
"lat": 30.3539
},
"weather": [
{
"id": 800,
"main": "Clear",
"description": "clear sky",
"icon": "01d"
}
],
"base": "stations",
"main": {
"temp": 295.09,
"feels_like": 295.22,
"temp_min": 295.09,
"temp_max": 295.6,
"pressure": 1016,
"humidity": 72,
"sea_level": 1016,
"grnd_level": 1014
},
"visibility": 10000,
"wind": {
"speed": 2.73,
"deg": 263,
"gust": 4.15
},
"clouds": {
"all": 0
},
"dt": 1699942690,
"sys": {
"type": 2,
"id": 47682,
"country": "EG",
"sunrise": 1699935583,
"sunset": 1699973975
},
"timezone": 7200,
"id": 347236,
"name": "Toukh",
"cod": 200
}
表示させたい部分はコメントアウトの部分となります。
<div class="temp"><p>{data.main.temp}°F</p></div>