class
๋ ๋ฌผ๊ฑด์ ๋ง๋๋ ์ค๋ช
์๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. class ์์ ๋ณ์๋ ํจ์๋ฅผ ๋ฃ์ ์ ์๋ค.
const date = new Date()
// date๋ ๊ฐ์ฒด(instance)
date.getFullYear()
date.getMonth()
date.getDate()
์์ ์ฝ๋์์ getFullYear, getMonth, getDate๋ ๋ฉ์๋
๋ผ๊ณ ํ๋ค. new Date()๋ ๋ด์ฅ๊ฐ์ฒด์ด๋ค.
ํด๋์คํ์ผ๋ก ๋ฐ๊พธ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
class Date {
getFullYear(){
// ์ฐ๋ ์ถ์ถ ๊ฐ๋ฅ
}
getMonth(){
// ์ ์ถ์ถ ๊ฐ๋ฅ
}
getDate(){
// ์ผ ์ถ์ถ ๊ฐ๋ฅ
}
}
ํด๋์ค์์ ํจ์์ ๋ณ์๋ฅผ ์ฌ์ฉํ ๋๋ function, let, const๋ฅผ ๋ถ์ด์ง ์๋๋ค. ๋ํ, ์ ์ฌํ ๊ฒ๋ค์ ํ๋์ class์ ๋ชจ์์ ๊ทธ๋ฃนํํ ์ ์๋ค. ๊ฐ์ฒด ํํ๋ก ๊ทธ๋ฃนํํด์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
(OOP: Objective Oriented Programming)์ด๋ผ๊ณ ํ๋ค.
์ปดํฌ๋ํธ์ ์๋ช
์ฃผ๊ธฐ
๋, ์ปดํฌ๋ํธ๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ํ๋๊ณ ์
๋ฐ์ดํธ ๋๊ณ , ์ฌ๋ผ์ง๊ฒ ๋ ๋ ํธ์ถ๋๋ method์ด๋ค.
- ๊ทธ๋ฆฌ๊ธฐ -> render
- ๊ทธ๋ฆฌ๊ณ ๋ ๋ค -> componentDidMount
- ๊ทธ๋ฆฌ๊ณ ๋ ๋ค ๋ณ๊ฒฝ๋์ ๋ -> componentDidUpdate
- ๊ทธ๋ฆฌ๊ณ ๋ ๋ค ์ฌ๋ผ์ง ๋ -> componentWillUnmount
์๋ฅผ ๋ค์ด, input์ฐฝ์ ์๋ ํฌ์ปค์ค๋ฅผ ๊น๋นก๊น๋นก๊ฑฐ๋ฆฌ๊ฒ ํ๊ณ ์ถ๋ค๋ฉด, ์ธํ์ฐฝ์ ๊ทธ๋ฆฌ๊ณ ๋ ๋ค์ componentDidMount ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ํฌ์ปค์ค๊ฐ ๊น๋นก๊น๋นก๊ฑฐ๋ฆฌ๊ฒ ํ๋ฉด ๋๋ค.
ํจ์ํ ์ปดํฌ๋ํธ์ ์๋ช
์ฃผ๊ธฐ๊ด๋ จ hook์ผ๋ก๋ useEffect
๊ฐ ์๋ค. useEffectํ๋๋ก class ์ปดํฌ๋ํธ ์๋ช
์ฃผ๊ธฐ์ ๋ฐ๋ฅธ ํจ์๋ค์ ์ ์ฌํ๊ฒ ๊ตฌํํ ์ ์๋ค.
useEffect๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋(ํ๋ฉด๊ทธ๋ฆฌ๊ธฐ) ์ดํ์ ์คํ๋๋ค.
// ์์กด์ฑ ๋ฐฐ์ด[]์ ์๋ฌด๊ฒ๋ ๋ฃ์ง ์์ผ๋ฉด Mount์์๋ง ๋ ๋ํด์ฃผ๊ณ ๋๋๊ฒ ๋จ(1๋ฒ๋ง ์คํ)
useEffect(()=>{
console.log("๋ง์ดํธ ๋จ!!")
},[])
// ์์กด์ฑ ๋ฐฐ์ด์ด ์๊ธฐ ๋๋ฌธ์ ๋ญ ํ๋๋ผ๋ ๋ฐ๋๋ฉด ๋ฌด์กฐ๊ฑด ๋ค์ ์คํ
useEffect(()=>{
console.log("์์ ํ๊ณ ๋ค์ ๊ทธ๋ ค์ง!!")
})
// someState๊ฐ ์์ ๋ ๋๋ง ๋ฆฌ๋ ๋ ํด์ฃผ๊ธฐ
useEffect(()=>{
console.log("์์ ํ๊ณ ๋ค์ ๊ทธ๋ ค์ง!!")
},[someState])
useEffect(()=>{
console.log("์์ ํ๊ณ ๋ค์ ๊ทธ๋ ค์ง!!")
//์ด๋ถ๋ถ์ด ๋๋๊ณ ์งํํ ๊ฒ๋ค
return(()=>{
console.log("์ฌ๊ธฐ์ ๋๊ฐ๋์!!")
})
})
useEffect๋ฅผ ์ฌ์ฉํ ๋ ์์กด์ฑ ๋ฐฐ์ด
์ ์ ์ด์ฃผ์ง ์๊ณ , return๋ ์ ์ด์ฃผ์ง ์์๋ค๋ฉด ๋ฌดํ๋ ๋๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
๋ํ, useEffect๋ ์์กด์ฑ ๋ฐฐ์ด ์ธ์์ ๋ฐ๋ผ ๋ ๋๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์์กด์ฑ ๋ฐฐ์ด์ ์ ๋ค๋ค์ผ ํ๋ค. ์ฆ, ์์กด์ฑ ๋ฐฐ์ด์ด ํจ์ํ ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ํฌ์ธํธ๋ค!
useEffect ์์์๋ ๊ฐ๊ธ์ setState
๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค. ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ์ดํ์ setState๋ฅผ ์ ์ฉํ๋ฉด, state๊ฐ ๋ณ๊ฒฝ๋๊ณ ๋ณ๊ฒฝ๋ state๋ก ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๊ทธ๋ ค์ง๊ฒ(๋ฆฌ๋๋) ๋๋ค.
๋ค์ ๋งํด, useEffect ๋ด์์ setState
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ถํ์ํ ๋ฆฌ๋ ๋๋ ๋ฌดํ๋ฃจํ๊ฐ ๋ฐ์ํ๊ณ , ์ฑ๋ฅ๋ฉด์์ ๋นํจ์จ์ ์ด๊ฒ ๋๋ค.
open-api
๋๋ public api
๋ ๋๊ตฌ๋ ์ง ์ธ ์ ์๋๋ก ๊ณต๊ฐ๋ API๋ฅผ ๋งํ๋ค. ์๋ฅผ ๋ค๋ฉด, ๋๋ฌผ ์ด๋ฏธ์ง, ๋ ์จ ์ ๋ณด, ๋ฐ์ด๋ฌ์ค ์ ๋ณด, ๊ธ์ต ์ ๋ณด ๋ฑ ์ฌ๋ฌ ์ ๋ณด๋ค์ API๋ฅผ ํตํด ๋ฌด๋ฃ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์คํ API๋ฅผ ์ ํ์ฉํ๋ฉด, ๋ฐฑ์๋ ์์ด๋ ์๋น์ค๋ฅผ ๋ง๋๋๊ฒ์ด ๊ฐ๋ฅํ๋ค! ์ฐธ๊ณ ๋ก open-api๋ ๋๋ถ๋ถ rest api๋ค.
๋ฌด๋ฃ api ์ฌ์ดํธ ๋ชจ์
https://github.com/public-apis/public-apis
useQuery๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์ฌ ํจ์จ์ . ์บ์ฑ์ด ๋๋ค๋ ์ฅ์ ๋ ์๋ค. axios๋ ์บ์ฑ์ด ๋์ง ์๋๋ค.