TIL - 21.08.02 ๐จโ๐ป - React
TIL - 21.08.02 ๐จโ๐ป
React
React๋ top-down ํ์์ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์ง๊ณ ์์ผ๋ state ๋์ด์ฌ๋ฆฌ๊ธฐ (Lifting State Up)์ผ๋ก ๋ถ๋ชจ ์ปดํฌ๋ํธ์ state๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
์ด ๋์ด ์ฌ๋ฆฌ๊ธฐ์ ์์ ์ ๋ถ๋ชจ ์ปดํฌ๋ํธ ๋ด์์ state๋ฅผ ๋ณ๊ฒฝ์ํค๋ ํจ์๋ฅผ ๋ง๋ค๊ณ ๊ทธ ํจ์๋ฅผ props๋ก ์์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌ ํ๋ ๊ฒ์ด๋ค.
State ํ๋ณ
- ๋ถ๋ชจ๋ก๋ถํฐ props๋ฅผ ํตํด ์ ๋ฌ ๋๋๊ฐ?
- ์๊ฐ์ด ์ง๋๋ ๋ณํ์ง ์๋๊ฐ?
- ์ปดํฌ๋ํธ ์ ๋ค๋ฅธ state๋ props๋ก ๊ณ์ฐ์ด ๊ฐ๋ฅํ๊ฐ ?
-> ํ๋๋ผ๋ Yes๋ผ๋ฉด state๋ก๋ ๋ถ์ ํฉํ๋ค.
Side Effect ( ๋ถ์ํจ๊ณผ )
-
useEffect Hook -> ๋๋ฒ์งธ ์ธ์ ์๋ฆฌ์ ์ด๋ค state๊ฐ ๋ณํ ๋ Effect Hook์ ์ฝ๋ฐฑํจ์๋ฅผ ์คํํ ์ง์ ๊ฐ๋ฅ ๊ฐ๋ฅํ๋ค.
๋ฐฐ์ด ํํ๋ก ๋ณ์๋ฅผ ์์๋ฅผ ๋ฃ์ผ๋ฉฐ, ์ด ๋๋ฒ์งธ ์์๋ฅผ ์ข ์์ฑ ๋ฐฐ์ด์ด๋ผ ํ๋ค. -
ํจ์ ๋ด ์ด๋ค ๊ตฌํ์ด '์ธ๋ถ์' ์ํฅ์ ๋ฏธ์น๋ฉด Side Effect๊ฐ ์๋ค๊ณ ํ๋ค.
-
Pure Function
์์ํจ์๋ ํจ์์ ์ ๋ ฅ๋ง์ด ํจ์์ ๊ฒฐ๊ณผ์ ์ํฅ์ ์ฃผ๋ ํจ์์ด๋ค.
์ด๋ค ์ ๋ฌ์ธ์๊ฐ ์ฃผ์ด์ง๋ฉด ํญ์ ๊ฐ์ ๊ฐ์ ๋ฐํํ๊ธฐ์ ์์ธก ๊ฐ๋ฅํ ํจ์์ด๋ค. -
fetch API
fetch๋ฅผ ์ฌ์ฉํ๊ณ ๋ฉ์๋๋ฅผ ๋ฐ๋ก ์ง์ ํ์ง ์์ผ๋ฉด GET ๋ฉ์๋๋ก API๋ฅผ ์ฝ์ด์จ๋ค.
isLoading
const func1 = ()=>{
const [isLoading, setIsLoading] = useState(true);
useEffect(()=>{
setTimeout(5000, setIsLoading(false))
},[])
return <>
{isLoading ? <div>Loading..</div> : <div> done! </div>}
</>
}
์ด๋ฐ์์ผ๋ก ์คํ ์ดํธ๋ฅผ ์ฌ์ฉํด์ ๋ก๋ฉ์ค์ ๋ก๋ฉ์ค์ด๋ผ๋ ๊ฒ์ ๊ฐ์์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ํ๋ฉด์ ๋ ๋ํ ์ ์๋ค.
TO DO ๐ฅ
- ๋ฆฌ์กํธ ๋ณต์ต
Retrospect ๐ง
์ค๋ ์ค๋๋ง์ ๋ฆฌ์กํธ๋ฅผ ๋ง๋ฌ๋ค.
๋คํํ ๋ธ๋ก๊ทธ ํฌ์คํ
์ ํ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋๋ถ๋ถ ๊ธฐ์ต์ด ๋์ ์ค๋ ์คํ๋ฆฐํธ์์ ํฐ ์ด๋ ค์์ ์์๋ค.
๋ด์ผ ํ์ด์๊ฐ์ ํ ์คํ๋ฆฐํธ๊น์ง ๋๋ด๋จ๋๋ฐ, ๋ด์ผ์ ๋ฐ๋ฆฐ ๋ฆฌ์กํธ ๋ณต์ต์ ๋ฌ๋ ค๋ณผ๊น ๊ณ ๋ฏผ์ค์ด๋ค.
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(TIL - 21.08.02 ๐จโ๐ป - React), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@planethoon/TIL-21.08.02์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค