๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL -์ผ๊ฐ„ํ•™์Šต๊ธฐ๋ก/React

Weather API & data component

by ___Jin 2022. 2. 5.

์ผ์ž์™€ ๋‚ ์”จ ๋ฐ˜์˜

์˜ค๋Š˜์ž todolist ์ž‘์—…

1. ์™€์ด์–ด ํ”„๋ ˆ์ž„ + ์ปดํฌ๋„ŒํŠธ ๋‚˜๋ˆ„๊ธฐ.

2.Data , Weather Component ๋งŒ๋“ค๊ธฐ.

 

1. ์™€์ด์–ด ํ”„๋ ˆ์ž„ + ์ปดํฌ๋„ŒํŠธ ๋‚˜๋ˆ„๊ธฐ.

์™€์ด์–ด ํ”„๋ ˆ์ž„

์ „์ฒด ํŽ˜์ด์ง€๋Š” App์— ๋„์šฐ๊ณ , ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๊ฐ์ž ํ• ์ผ์„ ์ž‘๊ฒŒ ๋‚˜๋ˆ„์–ด ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค.

๋‚˜๋ˆˆ ์ปดํฌ๋„ŒํŠธ๋“ค

App์— ํ‘œ์‹œ๋  ์ปดํฌ๋„ŒํŠธ ์™ธ์—๋Š” Listํด๋”์— ๋”ฐ๋กœ ๋‹ด์•„๋‘์—ˆ๋‹ค.

์–ด๋–ป๊ฒŒ state์™€ props๋ฅผ ๋‚ด๋ ค์ฃผ์–ด์•ผ ํ• ์ง€ ํ—ท๊ฐˆ๋ฆด๊ฒƒ ๊ฐ™์•„์„œ ๋ถ€๋ชจ์ž์‹๊ฐ„์˜ ํŠธ๋ฆฌ๊ตฌ์กฐ๋„ ํ‘œํ˜„ํ•ด๋ดค๋‹ค.

todo ํŠธ๋ฆฌ๊ตฌ์กฐ

๋งค์ผ ๋ฐ˜๋ณตํ•  ์ผ์ •์„ ๋„์šธ DayLoop์™€ ๋‹น์ผ ์ผ์ •ํ›„์—” ๋ฆฌ์…‹ ๋  TodoList๋Š”

AddList๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ผ์ •์„ ์ถ”๊ฐ€ํ• ๋•Œ ํ† ๊ธ€๋ฒ„ํŠผ์„ ์ด์šฉํ•ด ๋งž๋Š” ์ปดํฌ๋„ŒํŠธProp์œผ๋กœ ๋‚ด๋ ค ์ค„ ์˜ˆ์ •.

remove๋Š” ์–ด๋””์— ํฌํ•จํ•ด์•ผํ• ์ง€ ์ž˜๋ชจ๋ฅด๊ฒ ์–ด์„œ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ๋ผ์›Œ๋„ฃ์„๊ฑฐ ๊ฐ™์€๋ฐ ์•„๋งˆ addlist์— ๋“ค์–ด๊ฐ€์ง€์•Š์„๊นŒ...

 

2. Data , Weather Component ๋งŒ๋“ค๊ธฐ.

<Data />

Data ์ปดํฌ๋„ŒํŠธ ๋‚ ์งœ๋ฅผ ํ‘œ์‹œํ•ด์•ผํ•ด์„œ Date๊ฐ€ ๋งž์ง€๋งŒ ๊ทธ๋ƒฅ ๋„˜์–ด..๊ฐ”...

ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋’ค, ๋ณ€์ˆ˜์— ํ•œ๊ตญ์‹ ํ‘œ๊ธฐ์˜ ์ผ์ •์„ ๋งŒ๋“ค์–ด spanํƒœ๊ทธ์— ๋‹ด์•„ ๋ฆฌํ„ด(๊ฐ„๋‹จ)

 

<Wheather />

API๋Š” ์ฒจ๋ถ€ํ•œ ๊ณณ์˜ Current Weather data๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

https://openweathermap.org/current

 

Current weather data - OpenWeatherMap

Access current weather data for any location on Earth including over 200,000 cities! We collect and process weather data from different sources such as global and local weather models, satellites, radars and a vast network of weather stations. Data is avai

openweathermap.org

fetch๋ฅผ ์ด์šฉํ•ด ๋‚ ์”จ์•ฑ์˜ URL๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™”๋‹ค.

api.openweathermap.org/data/2.5/
weather?lat={์›ํ•˜๋Š”๊ณณ์˜ ๊ฒฝ๋„}&lon={์›ํ•˜๋Š”๊ณณ์˜ ์œ„๋„}&appid={๋‚˜์˜ API key}
const request = 'http://api.openweathermap.org/data/2.5/weather?lat=37&lon=127&appid={API key}'
const temp = fetch(request) 
  .then((response) => response.json())  //์‘๋‹ต์„ JSON ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์„œ ๋‹ค์Œ Promise๋กœ ์ „๋‹ฌ
  .then((result) =>  {  
  //์ „๋‹ฌ๋ฐ›์€ promise๊ฐ์ฒด์˜ ํ‚ค๋ฅผ ์ฐพ์•„๋“ค์–ด๊ฐ€์„œ ์›ํ•˜๋Š” temp์กฐํšŒ
    const kelbinTemp = result.main.temp;
 //์˜จ๋„๊ฐ€ kelbin?์‹์œผ๋กœ ๋‚˜์™€์„œ ์„ญ์”จ๋กœ ๋ณ€๊ฒฝํ•œ๋’ค ์†Œ์ˆ˜์  ๋’ค์˜ ํ•œ ์ž๋ฆฌ๋งŒ ๋‚จ๊ฒจ์คŒ.    
    setWeather((kelbinTemp-273.15).toFixed(1));
 //๋‚ ์”จ API์—์„œ icon์„ ์ง€์›ํ•จ ํ‚คweather์˜ 0๋ฒˆ์งธ ๋žญ์Šค์˜ icon์„ usestate์— ๋„˜๊ฒจ์คŒ.   
    setIcon(result.weather[0].icon)
  });

์ดํ›„ ๋ฆฌํ„ด๋ฌธ ์•ˆ์—์„œ ํƒœ๊ทธ์•ˆ์— ์ค‘๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด state๋กœ ๋„ฃ์–ด์ฃผ์—ˆ๊ณ  

icon์€ URL๋กœ ์ด์šฉ๊ฐ€๋Šฅํ•ด์„œ ๋ฐฑํ‹ฑ์„ ์ด์šฉํ•ด icon state๋ฅผ ์ ์šฉํ•ด์ฃผ์—ˆ๋‹ค.

error์ปจํŠธ๋กค๋„ ์ ์–ด๋†จ์—ˆ์ง€๋งŒ, ์ผ๋‹จ์€ ์ง€์›Ÿ๋‹ค (์–ด๋–ป๊ฒŒ ์จ์•ผํ• ์ง€ ์•„์ง๋ชจ๋ฅด๊ฒ ๋‹ค..)

 

<App />

App์— ๋„์›Œ์ค€ ๋ชจ์Šต

app์— ๋„์šฐ๊ณ  css๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ธˆ ๋งŒ์กŒ๋‹ค.

 

์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„ ๊ฐœ๋ฐœ์ด ์œ ์ง€๋ณด์ˆ˜๋ฉด์—์„œ ํŽธํ•˜๋‹ค๋Š” ๋ง์„ ์ข€๋” ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ ,

์ง„์งœ ๋ฆฌ์•กํŠธ ์†๋„ ๋ชป๋Œ“๋Š”๋ฐ ํ•˜๋‹ค๋ณด๋ฉด ๋˜๋Š”๊ตฌ๋‚˜ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ ,

๋‚ ์”จ ๋ถ€๋ถ„์ด ์ƒ์†Œํ•ด์„œ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ธ๋‹ค.

๊ทธ๋ž˜๋„ ์–ด๋ ค์›Œํ•˜๋˜ Fetch, State, API์ ์šฉ์„ ๋ชจ๋‘ ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ๋งŽ์€ ๊ณต๋ถ€๊ฐ€ ๋˜์—ˆ๋‹ค.

 

๋‚ด์ผ์€ AddList ์ ์šฉํ•˜์ž.

 

๋Œ“๊ธ€