๐ ์ค๋์ ํ์ต
- ํจ์ํ ์ปดํฌ๋ํธ์ ํน์ง๊ณผ ์ฅ์
- React Hooks์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ (useState, useEffect)
- ์ปค์คํ
ํ
๋ง๋ค๊ธฐ
๐ก ํต์ฌ ๊ฐ๋
์ ๋ฆฌ
ํจ์ํ ์ปดํฌ๋ํธ์ ํน์ง
function Component() {
return ();
}
- ๊ฐ๋
์ฑ์ด ์ข๊ณ ๋ฌธ๋ฒ์ด ๊ฐ๊ฒฐํจ
- Hook ์ฌ์ฉ ๊ฐ๋ฅ
- ํด๋์คํ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ์
useEffect ๊น์ด ์ดํดํ๊ธฐ
useEffect(() => {
return () => {
}
}, [์์กด์ฑ๋ฐฐ์ด]);
ํต์ฌ ํฌ์ธํธ:
- ์ฒซ ๋ฒ์งธ ์ธ์: ์ฝ๋ฐฑ ํจ์
- ๋ ๋ฒ์งธ ์ธ์: ์์กด์ฑ ๋ฐฐ์ด
- ๋ฐํ๊ฐ์ด ์๋ ํจ์(void)
- ์์กด์ฑ ๋ฐฐ์ด์ด ๋น์ด์์ผ๋ฉด ๋ง์ดํธ ์ ํ ๋ฒ๋ง ์คํ
useState ์คํ ํ๋ฆ
const [count, setCount] = useState(0);
- ์ด๊ธฐ ๋ ๋๋ง ์ ์ํ ์ด๊ธฐํ
- setCount๋ก ์ํ ๋ณ๊ฒฝ ์ ๋ฆฌ๋ ๋๋ง ๋ฐ์
- App ํจ์ ๋ค์ ํธ์ถ
์ปค์คํ
ํ
function useCounter(initialValue = 0) {
const [count, setCount] = useState(initialValue);
return [count, setCount];
}
function Counter() {
const [count, setCount] = useCounter(0);
...
ํน์ง:
- ๊ฐ ํธ์ถ๋ง๋ค ๋
๋ฆฝ์ ์ธ ์ํ ๊ด๋ฆฌ
- 'use' ์ ๋์ด๋ก ํ
์์ ๋ช
์
- ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ ํฅ์
โจ ์๋กญ๊ฒ ๋ฐฐ์ด ์
-
useEffect์ ์คํ ์์
- ์ธ๋ถ ์์คํ
์ฐ๋ ์ ์ฌ์ฉ
- ์์กด์ฑ ๋ฐฐ์ด ๋ณ๊ฒฝ ์ ์ฝ๋ฐฑ ์คํ
-
๋ ๋๋ง ๊ณผ์
- document.getElementById('root')๋ก DOM ์ ๊ทผ
- JSX๊ฐ ์ค์ ํจ์ ํธ์ถ๋ก ๋ณํ
-
Hook vs Util ํจ์
- Hook์ 'use' ์ ๋์ด ํ์
์ํ ๊ด๋ฆฌ ์ฌ๋ถ๋ก ๊ตฌ๋ถ
๐ ์ค๋ฌด ์ ์ฉ ํฌ์ธํธ
- ์ปค์คํ
ํ
์ผ๋ก ์ค๋ณต ๋ก์ง ์ ๊ฑฐ
- useEffect ์์กด์ฑ ๋ฐฐ์ด ์ ์คํ๊ฒ ๊ด๋ฆฌ
- ์ปดํฌ๋ํธ๋ฅผ ์์ ํจ์์ฒ๋ผ ์ค๊ณ
โญ๏ธ ์ค์ ์ฉ์ด
- Mount: ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ์ฒ์ ๋ํ๋๋ ์์
- Unmount: ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์์ ์ฌ๋ผ์ง๋ ์์
- Side Effect: ์ธ๋ถ ์์คํ
๊ณผ์ ๋๊ธฐํ ์์