컀μ€ν
ν
(Custom Hook)μΌλ‘ λΆλ¦¬νλ€λ κ²μ μ»΄ν¬λνΈ λ΄λΆμ μν κ΄λ¦¬(useState), λΆμ ν¨κ³Ό(useEffect), λλ κΈ°ν λ‘μ§μ λ³λμ ν¨μ(컀μ€ν
ν
)λ‘ μΆμΆν΄ μ»΄ν¬λνΈμ λ
립μ μΌλ‘ κ΄λ¦¬νλ κ²μ μλ―Έν©λλ€. 컀μ€ν
ν
μ Reactμ ν
(useState, useEffect λ±)μ μ¬μ©νλ©°, μΌλ°μ μΌλ‘ useλ‘ μμνλ μ΄λ¦μ κ°μ§λλ€.
κ°λ μ±κ³Ό μ μ§λ³΄μμ±
UI λ λλ§κ³Ό κΈ°λ₯ λ‘μ§μ λΆλ¦¬νμ¬ κ°λ μ±κ³Ό μ μ§λ³΄μ ν₯μ
- μ»΄ν¬λνΈ λ΄λΆμ μν κ΄λ¦¬μ UI λ λλ§ λ‘μ§μ΄ μμ¬ μμΌλ©΄ μ½λκ° λ³΅μ‘ν΄μ§κ³ μ½κΈ° μ΄λ €μμ§λλ€.
- ν μΌλ‘ λ‘μ§μ λΆλ¦¬νλ©΄ μ»΄ν¬λνΈλ JSXμ UI λ λλ§μ μ§μ€νκ³ , λ‘μ§μ λ³λλ‘ κ΄λ¦¬λμ΄ κ°λ μ±μ΄ ν₯μλ©λλ€.
μ¬μ¬μ©μ±
λμΌν λ‘μ§μ μ¬λ¬ μ»΄ν¬λνΈμμ μ¬μ©ν λ
- λμΌν λ‘μ§μ μ¬λ¬ μ»΄ν¬λνΈμμ μ¬μ©ν λ, ν μΌλ‘ λΆλ¦¬νλ©΄ μ€λ³΅ μ½λλ₯Ό μ€μ΄κ³ μΌκ΄μ±μ μ μ§ν μ μμ΅λλ€.
- λΉλ‘ νμ¬ μ¬μ¬μ©νμ§ μλλΌλ, λμ€μ νμν κ°λ₯μ±μ λλΉν΄ λΆλ¦¬νλ κ²μ΄ μ 리ν μ μμ΅λλ€.
ν μ€νΈ μ©μ΄μ±
UIλ λλ§κ³Ό κΈ°λ₯ λ‘μ§μ λΆλ¦¬νμ¬ λ 립μ μΌλ‘ κ²μ¦ κ°λ₯
- ν μ μ»΄ν¬λνΈμ λ 립μ μΌλ‘ ν μ€νΈν μ μμ΅λλ€. UIλ₯Ό λ λλ§νμ§ μκ³ λ‘μ§λ§ κ²μ¦ κ°λ₯.
- μ: useCounter ν μ ν μ€νΈν λ, μΉ΄μ΄νΈ μ¦κ°μ νμ΄λ¨Έ λμμ λ³λλ‘ νμΈν μ μμ΅λλ€.
κΈ°λ₯ λ³λ‘ λΆλ¦¬
μν κ΄λ¦¬
λ°μ΄ν° fetching
μ΄λ²€νΈ μ²λ¦¬
μΊ‘μν
- μν κ΄λ¦¬, λ°μ΄ν° fetching, μ΄λ²€νΈ μ²λ¦¬ λ± νΉμ κΈ°λ₯(κ΄μ¬μ¬)μ ν μΌλ‘ μΊ‘μνν΄ μ»΄ν¬λνΈμ μ± μμ μ€μ λλ€.
- μ΄λ μ½λμ λͺ¨λνμ μ μ§λ³΄μμ±μ λμ λλ€.
볡μ‘ν λ‘μ§ κ΄λ¦¬
λ‘μ§μ 체κ³μ μΌλ‘ ꡬ쑰ν
- λ‘μ§μ΄ 볡μ‘ν μλ‘(μ: μ¬λ¬ useState, useEffect μ‘°ν©) μ»΄ν¬λνΈ λ΄λΆμ λλ©΄ κ΄λ¦¬κ° μ΄λ ΅μ΅λλ€. ν μΌλ‘ λΆλ¦¬νλ©΄ λ‘μ§μ 체κ³μ μΌλ‘ ꡬ쑰νν μ μμ΅λλ€.
μΈμ ν μΌλ‘ λΆλ¦¬ν΄μΌ νλ?
- λ‘μ§μ΄ 볡μ‘νκ±°λ μ¬λ¬ μ€μ μ½λλ₯Ό μ°¨μ§ν λ(μ: useEffectμ useStateκ° μ‘°ν©λ κ²½μ°).
- κ°λ μ±μ λμ΄κ³ μ»΄ν¬λνΈλ₯Ό κ°κ²°νκ² μ μ§νκ³ μΆμ λ.
- ν μ€νΈλ₯Ό λ 립μ μΌλ‘ μννκ³ μΆμ λ.
- νμ¬ λλ λ―Έλμ λ‘μ§μ μ¬μ¬μ©ν κ°λ₯μ±μ΄ μμ λ.
- μ) λ°μ΄ν° fetching, νΌ κ΄λ¦¬, νμ΄λ¨Έ, μ λλ©μ΄μ λ±.
λΆλ¦¬νμ§ μμλ λλ κ²½μ°?
- λ‘μ§μ΄ λ§€μ° λ¨μν λ(μ: λ¨μΌ useStateλ‘ μΆ©λΆν κ²½μ°).
- λ‘μ§μ΄ νΉμ μ»΄ν¬λνΈμ κ°νκ² μμ‘΄μ μ΄κ³ μ¬μ¬μ© κ°λ₯μ±μ΄ μ ν μμ λ.
- μΆκ° νμΌμ λ§λλ μ€λ²ν€λκ° λ‘μ§μ 볡μ‘λμ λΉν΄ ν΄ λ.
- μ) const [isOpen, setIsOpen] = useState(false); κ°μ λ¨μν μν κ΄λ¦¬.