# 🧠 [LEVEL 2] Hook의 심연: λ‹¨μˆœ μ‚¬μš©μ„ λ„˜μ–΄ 였용 λ°©μ§€λ‘œ ## 1. `useEffect`λŠ” '타이머'κ°€ μ•„λ‹ˆλ‹€. '동기화' μž₯μΉ˜λ‹€. - μ΄ˆλ³΄λŠ” `useEffect`λ₯Ό ν•¨μˆ˜ μ‹€ν–‰κΈ°λ‘œ μ“΄λ‹€. - 쀑급은 **"μ΄νŽ™νŠΈκ°€ μ–΄λ–€ μƒνƒœμ™€ μ™ΈλΆ€ μ‹œμŠ€ν…œ(API, 라이브러리)을 λ™κΈ°ν™”ν•˜λŠ”κ°€?"**λ₯Ό κ³ λ―Όν•œλ‹€. - **Check**: μ˜μ‘΄μ„± λ°°μ—΄(`[]`)에 넣은 λ³€μˆ˜κ°€ 정말 이 μ΄νŽ™νŠΈμ˜ 원인인가? ## 2. Custom Hooks: λ…Όλ¦¬μ˜ 뢄리 - μ»΄ν¬λ„ŒνŠΈ μ•ˆμ— `fetch`, `loading`, `error` κ°€ κ°€λ‹₯κ°€λ‹₯ 널렀 μžˆλ‹€λ©΄ μ‹€νŒ¨! - `useFetchData()` λΌλŠ” λ‚˜λ§Œμ˜ 훅을 λ§Œλ“€μ–΄ λ…Όλ¦¬λ§Œ 쏙 뽑아내라. - **성곡 κ°€μ΄λ“œ**: UI λ‹΄λ‹Ή μ»΄ν¬λ„ŒνŠΈλŠ” `const { data } = useMyLogic();` ν•œ μ€„λ‘œ λλ‚˜μ•Ό ν•œλ‹€. ## 3. `useRef`: 사라지지 μ•ŠλŠ” κΈ°μ–΅ - `useState`λŠ” λ°”λ€” λ•Œλ§ˆλ‹€ 화면을 λ‹€μ‹œ κ·Έλ¦°λ‹€(Refrender). - `useRef`λŠ” 값이 λ°”λ€Œμ–΄λ„ 화면을 그리지 μ•ŠλŠ”λ‹€. - **μš©λ„**: 이전 ν™”λ©΄μ˜ κ°’ μ €μž₯, DOM 직접 μ ‘κ·Ό(포컀슀 λ“±), 타이머 ID 보관.