Design Pattern for Higher React Programming
μ΄ λ¬Έμλ λ¦¬μ‘ μ ν리μΌμ΄μ μμ μ¬μ©λλ μ£Όμ λμμΈ ν¨ν΄λ€μ μ€λͺ ν©λλ€. μ£Όμ λ΄μ©μ λ€μκ³Ό κ°μ΅λλ€:
Containerμ Presentation ν¨ν΄: λΉμ¦λμ€ λ‘μ§κ³Ό UIλ₯Ό λΆλ¦¬νμ¬ κ΄λ¦¬νλ λ°©λ²μ μ€λͺ ν©λλ€.
Container Component: λ°μ΄ν° μ²λ¦¬μ μν κ΄λ¦¬λ₯Ό λ΄λΉνλ μ»΄ν¬λνΈμ μν κ³Ό ꡬν λ°©λ²μ λ€λ£Ήλλ€.
Presentational Component: UI ννμ μ§μ€νλ©° propsλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό λ°μ νμνλ λ°©μμ μ€λͺ ν©λλ€.
κ³ κΈ ν¨ν΄: HOC(Higher Order Component)μ Render Propsλ₯Ό ν΅ν μ»΄ν¬λνΈ λ‘μ§ μ¬μ¬μ© λ°©λ²μ μκ°ν©λλ€.
Hook κΈ°λ° λΆλ¦¬: 컀μ€ν ν μ μ¬μ©νμ¬ λ‘μ§μ λΆλ¦¬νκ³ μ¬μ¬μ©νλ νλμ μΈ μ κ·Ό λ°©μμ μ€λͺ ν©λλ€.
Container/Representational Component
μ½λμ ν¨μ¨μ μΈ κ΄λ¦¬λ₯Ό μν΄ μ»¨ν μ΄λμ λ λ μ»΄ν¬λνΈλ₯Ό λΆλ¦¬νλ κ²μ΄ μ’μ΅λλ€. μ΄λ μ μ§λ³΄μμ±μ λμ΄κ³ μ»΄ν¬λνΈμ μν μ λͺ νν νλ©°, νΉν λκ·λͺ¨ μ ν리μΌμ΄μ μμ μ½λμ νμ₯μ±κ³Ό ν μ€νΈκ° μ©μ΄ν΄μ§λλ€.
컨ν μ΄λ μ»΄ν¬λνΈ(container component)λ λ Όλ¦¬, μν κ΄λ¦¬, λ°μ΄ν° νμΉ λ±μ μ²λ¦¬νλ μ»΄ν¬λνΈμ λλ€. APIμμ μνΈμμ©μ ν΅ν΄ μ»μ λ°μ΄ν°μ μ½λ°± ν¨μλ₯Ό μμ μ»΄ν¬λνΈμ μ λ¬νλ μν μ ν©λλ€. λ¨, μκ°μ ννμ΄λ κ΄λ ¨ λ‘μ§μ μ§μ λ€λ£¨μ§ μμ΅λλ€.
νλ μ ν
μ΄μ
λ μ»΄ν¬λνΈ(presentational component)λ μ¬μ©μ μΈν°νμ΄μ€μ μκ°μ ννμ λ΄λΉνλ μ»΄ν¬λνΈλ‘, μ체μ μΈ μν κ΄λ¦¬ μμ΄ props
μλ§ μμ‘΄ν΄μΌ ν©λλ€. μ΄λ¬ν props
λ μμ 컨ν
μ΄λ μ»΄ν¬λνΈλ‘λΆν° μ λ¬λ°μ΅λλ€.
HOC, High Order Class
μ»΄ν¬λνΈλ₯Ό μ λ ₯λ°μ μλ‘μ΄ μ»΄ν¬λνΈλ₯Ό λ°ννλ ν¨μλ‘, 컨ν μ΄λ μ»΄ν¬λνΈλ€ μ¬μ΄μμ 곡ν΅λ λ‘μ§μ μ¬μ¬μ©νλ λ° ν¨κ³Όμ μ λλ€.
Render Props
μμ κ°μ λ‘μ§μ 곡μ νκΈ° μν νΉλ³ν ν¨μ ν¨ν΄μΌλ‘, μ»΄ν¬λνΈκ° μμ μ λ λλ§ λ‘μ§μ λ€λ₯Έ μ»΄ν¬λνΈμ 곡μ ν μ μλλ‘ props
λ‘ ν¨μλ₯Ό μ λ¬νλ λ°©μμ
λλ€. μ΄λ₯Ό ν΅ν΄ μ»΄ν¬λνΈλ μμ μ λμμ μ μ°νκ² νμ₯νκ³ μ¬μ¬μ©ν μ μμ΅λλ€.
Hook for Separation
λ Όλ¦¬μ μνλ₯Ό μΊ‘μννκΈ° μν΄ μ¬μ©μ μ μ νν¬(custom hook)λ₯Ό μ¬μ©ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ»΄ν¬λνΈμ κ°λ μ±κ³Ό ꡬ쑰λ₯Ό κ°μ ν μ μμ΅λλ€.
Last updated