μ»΄ν¬λνΈμ μν κ΄λ¦¬λ₯Ό μν "React Hooks"
Hooks λ±μ₯νκΈ° μ
μ»΄ν¬λνΈμ μν κ΄λ¦¬λ₯Ό νλ €λ©΄ ν΄λμ€ κΈ°λ° λ¦¬μ‘νΈ μ»΄ν¬λνΈλ₯Ό μμ±ν΄μΌ νλ€.
this.state νλμ μ΄λ¦μ μ μ₯νλ€λ©΄, μ¬μ©μκ° μ΄ κ°μ λ³κ²½ν λλ§λ€ μ΄ κ°μ΄ κ°±μ λκ³ λ€μ νλ©΄μ λ°μνλ Class κΈ°λ° μ»΄ν¬λνΈ λ°©μμ΄μλ€.
κ·Έλ κΈ° λλ¬Έμ ν¨μ κΈ°λ° μ»΄ν¬λνΈλ₯Ό μμ±νμ¬ μ μ§ λ³΄μλ₯Ό μ½κ² νλλ‘ Hooksλ₯Ό λ§λ€μλ€.
Hooksλ ?
리μ‘νΈ v16.8 μ μλ‘ λμ λ κΈ°λ₯μΌλ‘, ν¨μν μ»΄ν¬λνΈμμ stateμ μλͺ μ£ΌκΈ° κΈ°λ₯μ μ°λν μ μκ² ν΄μ£Όλ ν¨μ
μ½κ² λ§ν΄, ν¨μν μ»΄ν¬λνΈμμ μν κ° λ° λ€λ₯Έ μ¬λ¬ κΈ°λ₯μ μ¬μ©νκΈ° νΈλ¦¬νκ² ν΄μ£Όλ λ©μλμ΄λ€.
κΈ°μ‘΄ λΌμ΄ν μ¬μ΄ν΄ λ©μλ κΈ°λ°μ΄ μλ λ‘μ§ κΈ°λ°μΌλ‘ λλ μ μκΈ° λλ¬Έμ, μ»΄ν¬λνΈλ₯Ό ν¨μ λ¨μλ‘ μκ² λλ μ μλ€.
ν¨μ μ»΄ν¬λνΈμμ stateμ κ°μ§ μ μκ² λμλ€.
λ§μΌ μ±μ react hookμ μ¬μ©νμ¬ λ§λ λ€λ©΄ class component, render λ±μ μν΄λ λλ€λ λ»μ΄λ€.
- class μμμ λμνμ§ μμΌλ―λ‘ class μμ΄ λ¦¬μ‘νΈλ₯Ό μ¬μ©ν μ μκ² νλ€.
→ λͺ¨λ κ²μ νλμ functionμ΄ λλ κ², ν¨μν νλ‘κ·Έλλ°μ΄ κ°λ₯ν΄μ§λ κ²
κΈ°λ₯
- ν¨μν μ»΄ν¬λνΈμμλ μν κ΄λ¦¬λ₯Ό ν μ μλ useState
- λ λλ§ μ§ν μμ μ μ€μ νλ useEffect λ±
→ κΈ°μ‘΄μ ν¨μν μ»΄ν¬λνΈμμ ν μ μμλ λ€μν μμ μ ν μ μκ² ν΄μ€λ€.
μ£Όμμ¬ν
- Hook μ¬μ© μμ μ΅μμ(λ°λ³΅λ¬Έ, 쑰건문, μ€μ²©λ ν¨μ x)μμ κ·Έλ¦¬κ³ μλ°μ€ν¬λ¦½νΈ ν¨μκ° μλ 리μ‘νΈ ν¨μ μ»΄ν¬λνΈμμλ§ Hookμ νΈμΆν΄μΌ νλ€. μ»΄ν¬λνΈκ° λ λλ§λ λλ§λ€ νμ λμΌν μμλ‘ Hookμ΄ νΈμΆλκ² λλ€.
useState
ν¨μν μ»΄ν¬λνΈμμλ κ°λ³μ μΈ μνλ₯Ό μ§λκ³ μμ μ μκ² ν΄μ£Όλ κ°μ₯ κΈ°λ³Έμ μΈ Hook
- stateλ₯Ό ν¨μ μ»΄ν¬λνΈ μμμ μ¬μ©ν μ μκ² νλ€.
- ν¨μν μ»΄ν¬λνΈμμ μνλ₯Ό κ΄λ¦¬ν΄μΌ λλ μΌμ΄ λ°μν λ μ¬μ©
- μ¬λ¬λ² μ¬μ©νκΈ°
- νλμ useState ν¨μλ νλμ μνκ°λ§ κ΄λ¦¬ν μ μμΌλ―λ‘ μ»΄ν¬λνΈμμ κ΄λ¦¬ν΄μΌ ν μνκ° μ¬λ¬κ°μΈ κ²½μ°μλ μ¬λ¬λ² μ¬μ©νλ©΄ λλ€.
useEffect
리μ‘νΈ μ»΄ν¬λνΈκ° λ λλ§ λ λλ§λ€ νΉμ μμ μ μννλλ‘ μ€μ ν μ μλ Hook
ν΄λμ€ν μ»΄ν¬λνΈμ componentDidMount μ componentDidUpdate λ₯Ό ν©μΉ ννλ‘ λ³΄μλ 무방νλ€.
- λ§μ΄νΈ λ λλ§ μ€ννκ³ μΆμ λ
- νΉμ κ°μ΄ μ λ°μ΄νΈ λ λλ§ μ€ννκ³ μΆμ λ
- μ»΄ν¬λνΈκ° μΈλ§μ΄νΈλκΈ° μ μ΄λ, μ λ°μ΄νΈ λκΈ° μ§μ μ μ΄λ ν μμ μ μννκ³ μΆλ€λ©΄ useEffect μμ λ·μ 리(cleanup) ν¨μλ₯Ό λ°νν΄μ£Όμ΄μΌ ν©λλ€
useReducer
useState λ³΄λ€ μ»΄ν¬λνΈμμ λ λ€μν μν©μ λ°λΌ λ€μν μνλ₯Ό λ€λ₯Έ κ°μΌλ‘ μ λ°μ΄νΈν΄μ£Όκ³ μΆμ λ μ¬μ©νλ Hook
Reducer
- νμ¬ μνμ, μ λ°μ΄νΈλ₯Ό μν΄ νμν μ 보λ₯Ό λ΄μ μ‘μ (action) κ°μ μ λ¬ λ°μ μλ‘μ΄ μνλ₯Ό λ°ννλ ν¨μ
- 리λμ ν¨μμμ μλ‘μ΄ μνλ₯Ό λ§λ€ λλ κΌ λΆλ³μ±μ μ§μΌμ£Όμ΄μΌ ν©λλ€.
useMemo
νΉμ κ° μ¬μ¬μ©νκ³ μ ν λ μ¬μ©νλ Hook (= 리ν΄κ° μ¬μ¬μ©)
- ν¨μν μ»΄ν¬λνΈ λ΄λΆμμ λ°μνλ μ°μ°μ μ΅μ ν ν μ μκ² νλ€.
- ν¨μν μ»΄ν¬λνΈ: λ λλ§ λ λλ§λ€ ν¨μ μ»΄ν¬λνΈκ° νΈμΆλλ€λ λ»
- μ¦, ν¨μκ° νΈμΆλλ©΄ λͺ¨λ λ΄λΆ λ³μκ° μ΄κΈ°νλλ€
- μ»΄ν¬λνΈ λ΄λΆμ μ¬λ¬ κ°μ ν¨μκ° μμ κ²½μ°, νλμ κ°λ§ λ°λμ΄λ λͺ¨λ ν¨μκ° νΈμΆλμ΄ λΆνμν μ°μ°μ΄ λ€μ μ΄λ£¨μ΄μ§
- 볡μ‘ν μ°μ°μ μ€λ³΅μ νΌνκ³ Reactμ±μ μ±λ₯μ μ΅μ ννλ€.
useCallback
νΉμ ν¨μλ₯Ό μλ‘ λ§λ€μ§ μκ³ μ¬μ¬μ©νκ³ μΆμλ μ¬μ©νλ Hook (= ν¨μ μ¬μ¬μ©)
- μ£Όλ‘ λ λλ§ μ±λ₯μ μ΅μ νν΄μΌ νλ μν©μμ μ¬μ©νλ€.
- μ΄λ²€νΈ νΈλ€λ¬ ν¨μλ₯Ό νμν λλ§ μμ± ν μ μλ€.
useContext
ν¨μν μ»΄ν¬λνΈμμ Context λ₯Ό λ³΄λ€ λ μ½κ² μ¬μ©νκ² ν΄μ€λ€.
useRef
ν¨μν μ»΄ν¬λνΈμμ ref λ₯Ό μ½κ² μ¬μ© ν μ μκ² ν΄μ€λ€.
μ°Έκ³ λ¬Έν