π React Architecture λ° ν¨ν΄κ³Ό κ΄λ ¨λ μν°ν΄
π 리μ‘νΈ μ€κ³ κ°μ΄λβ
리μ‘νΈ μ€κ³λ₯Ό νλ μμΉβ
- μ°λ¦¬λ νμ₯μ±μκ³ μ¬μ¬μ©μ± μλ μ½λλ₯Ό λ§λ€μ΄μΌ νλ€
- κ΄μ¬μ¬μ λ°λΌμ μ½λλ₯Ό λΆλ¦¬νκ³ λ¨μΌ μ± μμ κ°μ§λ μ»΄ν¬λνΈλ₯Ό λ§λ€μ΄μΌ νλ€
- μΈλΆμ μ μ΄λ₯Ό μμμμΌμΌ νλ€
μ»΄ν¬λνΈμ μ¬μ μ μ μμ λ°λ₯΄λ©΄ μ»΄ν¬λνΈλ μ¬μ¬μ©μ±κ³Ό λ²μ©μ±μ μν΄μ λ§λ€μ΄μ ΈμΌ νλ€.
리μ‘νΈ μ»΄ν¬λνΈλ₯Ό λ± νκ°μ§ μν λ§ μνμν€κΈ° μν΄ μ€κ³ νκΈ° μν΄μλ μμν¨μμ νΉμ±κ³Ό κ°μ΄ λμΌν propsλ₯Ό λ°μΌλ©΄ κ°μ JSX 리ν΄νλ μμν¨μλ‘ μ΄λ€μ ΈμΌ νλ€. μ 격리λκ³ μν μ΄ μ μ μν΄μ μ»΄ν¬λνΈλ₯Ό λ§λ€λ©΄ μ½λκ° λ무 κ΄λ²μν μν μ μννκ³ λ³΅μ‘ν΄μ§λ κ±Έ λ°©μ§ν΄ μ€λ€. λ¨μΌ μ± μμ κ°μ§λ μμ μ»΄ν¬λνΈλ€μ ν μ€νΈνκΈ° μ’κ³ κ°λ μ±λ μ’λ€.
μ μ΄λ₯Ό μΈλΆμ μμ ν μλ‘ μ»΄ν¬λνΈμ μ μ°μ±κ³Ό μ¬μ¬μ©μ±μ΄ λμμ§λ€. λ°λ©΄, μ μ΄λ₯Ό μμνλ©΄ ν μλ‘ μμν μ½λλ₯Ό μ¬μ© νλ μ½λμ λν μ΄ν΄ λμ΄λκ° λμ κ°κ³ , κ°λ μ±μ΄ λ¨μ΄μ§λ€λ λ¬Έμ λ μλ€. μμκ³Ό μ¬μ© μ©μ΄μ±μ μ€μ¬μ μ μ‘λκ² μ€μνλ€.
κ΄μ¬μ¬μ λ°λ₯Έ λΆλ¦¬μ μ¬μ¬μ©μ±μ νλλ₯Ό μν΄ μ μ΄ μμμ μ μ νκ² νκ³ λ, λ무 μ΄λ ΅μ§ μκ² μ¬μ©μ±λ λμ΄λ κ·Έ μ¬μ΄μ μ΅μ μ μ°Ύμλ΄λκ² κ°λ°μμ λͺ«μΈ κ² κ°λ€.
π μ μ©ν 리μ‘νΈ ν¨ν΄ 5κ°μ§β
μλ³Έ: 5 Advanced React Patterns
- μ΄λ»κ² νλ©΄ μ¬μ¬μ©κ°λ₯ν μ»΄ν¬λνΈλ₯Ό κ°κ° λ€λ₯Έ use caseλ€μ λ§λλ‘ λ§λ€ μ μμκΉ?
- μ΄λ»κ² νλ©΄ μ»΄ν¬λνΈλ₯Ό κ°λ¨ν APIλ‘ μ°κΈ° μ½κ² λ§λ€ μ μμκΉ?
- μ΄λ»κ² νλ©΄ UIμ κΈ°λ₯μ±μ μΈ‘λ©΄μμ νμ₯ κ°λ₯ν μ»΄ν¬λνΈλ₯Ό λ§λ€ μ μμκΉ?
μ°λ¦¬κ° μ μ€κ³λ μ»΄ν¬λνΈλ₯Ό ꡬννκΈ° μν΄μ νν κ°μ²΄ μ§ν₯μμ μ΄μΌκΈ°νλ "μ€λ³΅νμ§λ§λΌ"λΌλ DRY μμΉμ λ°λΌμΌ νλλ°, κ·Έλ΄λ €λ©΄ μ¬μ¬μ©κ°λ₯ν μ»΄ν¬λνΈλ₯Ό λ§λ€μ΄μΌ λλ€. κ·Έ μ¬μ¬μ©κ°λ₯ν μ»΄ν¬λνΈλ₯Ό λ§λ€λ €λ©΄ μ°λ¦¬κ° κ°κ° λ€λ₯Έ use caseμ λ§κ² λ§λ€μ΄μΌ νκ³ κ·Έμ λ°λΌ μ»΄ν¬λνΈμ κ°λ¨ν API μ°κΈ° μ½κ² λ§λ€μ΄μΌ νλ€.
μ»΄ν¬λνΈλ₯Ό κ°λ¨ν APIλ‘ μ°κΈ° μ½κ² λ§λ€κΈ° μν΄μ μ’ λ μ μ°νκ³ μ΅ν΅μ±μλ μ»΄ν¬λνΈλ₯Ό λ§λ€μ΄μΌ νλλ° κ·Έλ¬ν κ΄λ ¨λ ν¨ν΄λ€λ κ΅μ₯ν λ§λ€. κ·Έ ν¨ν΄λ€μ κΈ°λ³Έμ μΈ κ°λ μ λ² μ΄μ€λ IoC(μ μ΄μ μμ )μ΄ λ°νμΌλ‘ λμ΄ μλλ°, ν΄λΉ μ»΄ν¬λνΈμκ² μ μ΄κΆμ λμ£Όκ³ νλ¦μ λ§κ² ν΅μ ? λλ ν΄λΉ λ‘μ§μ ꡬννκ³ μ΄ νλ¦μ λν νΈμΆμ μΈλΆ λΌμ΄λΈλ¬λ¦¬κ° ν΄μ£Όλ λ°©μμΌλ‘ κ°λ¨ν APIλ₯Ό λ§λ€ μ μμΌλ©° μ¬μ¬μ©κ°λ₯ν μ»΄ν¬λνΈλ₯Ό λ§λ€ μ μλ€.
νν λ§μ΄ μ¬μ©νκ³ μλ 컀μ€ν ν λ μλ₯Ό λ€μκ° μλλ° μ΄ μ»€μ€ν ν μ μμ±νμ¬ μ¬μ©νλ©΄ λ‘μ§μ λΆλ¦¬ν μ μμΌλ©° μ ν¬λ μ΄ ν μΌλ‘ μ»΄ν¬λνΈμ κ°μ Έλ€ ν΄λΉ μ»΄ν¬λνΈμ λ§κ² μ¬μ©ν μ μλ€. λ°λΌμ μ μ΄κΆμ μ»΄ν¬λνΈκ° κ°μ§κ³ μκ³ ν΄λΉ ν΅μ κΆ?μ λκ²¨μ£Όμ΄ ν΄λΉ μ»΄ν¬λνΈμμ νΈμΆνλ κ²μ΄ μλ ν΄λΉ μ»΄ν¬λνΈ λ°μμ νΈμΆνκ² νμ¬ κ΄μ¬μ¬λ₯Ό λΆλ¦¬ν¨μΌλ‘μ¨ μ»΄ν¬λνΈλ₯Ό μ¬μ¬μ©ν μ μλ€κ³ μκ°νλ€.
π 리μ‘νΈ μ΄ν리μΌμ΄μ ꡬ쑰 - μν λ―Ή λμμΈβ
μν λ―Ή λμμΈμ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μκ³ λ¨μν μμλ‘ λΆλ¦¬νλ κ°λ μ΄λ©°, μΌκ΄λ UIλ₯Ό λ§λ€κ³ μ μ§λ³΄μμ±μ ν₯μμμΌμ€λ€.
μΉ μ¬μ΄νΈμ κ΅¬μ± λΈλ‘μ΄ HTML μμλ€μ΄λ©°, μ΄ μμλ€μ μμλΌκ³ λ³Ό μ μλ€. μμκ° κ²°ν©λμ΄ λΆμκ° λλ κ²μ²λΌ HTML μμλ€μ κ²°ν©λμ΄ λ³΅μ‘ν νμ΄μ§λ₯Ό νμ±νλ€. λ§μ°¬κ°μ§λ‘ κ° νμ΄μ§λ μ»΄ν¬λνΈ(λλ HTML μμ)λ‘ λΆν΄λ μ μμΌλ©°, λΆν΄λ μ»΄ν¬λνΈλ ννμμ κ°λ₯΄μΉλ λΆμ, μ 기체μ μ μ¬νλ€.
μμλ λ²νΌ, μ λͺ©, ν μ€νΈ μ λ ₯ νλμ κ°μ κ°μ₯ μμ κ΅¬μ± μ»΄ν¬λνΈμ΄λ€. μμλ λͺ¨λ μ»΄ν¬λνΈλ€μ κΈ°μ΄κ° λλ λΈλ‘μ΄λ©°, λ μ΄μ λΆν΄ λ μ μλ νμ μμμ΄λ€. λΆμλ 2κ° μ΄μμ μμλ‘ κ΅¬μ±λμ΄ μμΌλ©°, νλμ λ¨μλ‘ ν¨κ» λμνλ UI μ»΄ν¬λνΈλ€μ λ¨μν κ·Έλ£Ήμ΄λ€. μλ₯Ό λ€μ΄ HTML ν μ€νΈ μ λ ₯ νλ, λ μ΄λΈ, μ€λ₯ λ©μΈμ§ λλ HTML ν μ€νΈ μ λ ₯ νλμ λ²νΌμΌλ‘ ꡬμ±λ κ²μ μ»΄ν¬λνΈκ° μλ€. μ 기체λ λΆμ, μμ λλ λ€λ₯Έ μ 기체μ κ·Έλ£ΉμΌλ‘ ꡬμ±λ λΉκ΅μ 볡μ‘ν κ·Έλ£Ήμ΄λ€. μ΄ μ 기체λ€μ μΈν°νμ΄μ€μ κ°λ³μ μΈ μμμ νμ±νλ€.
ν νλ¦Ώμ μ»΄ν¬λνΈλ€μ λ°°μΉνκ³ μ€κ³μ ꡬ쑰λ₯Ό 보μ¬μ€λ€. νμ΄μ§μ μ€μ μ»΄ν¬λνΈκ° μμ κ²½μ°, νμ΄μ§κ° μ΄λ»κ² 보μΌμ§μ λν 골격 ꡬ쑰μ΄λ€. νμ΄μ§λ μ€μ 컨ν μΈ λ€μ λ°°μΉν UIλ₯Ό 보μ¬μ£Όλ©°, ν νλ¦Ώμ ꡬ체νλ μΈμ€ν΄μ€μ΄λ€. ν νλ¦Ώκ³Ό νμ΄μ§λ μ 기체, λΆμ, μμλ₯Ό ν¬ν¨νκ³ μλ€. μ΄λ¬ν μμ κ΅¬μ± μμλ€μ κ²°ν©μ μ΄ν리μΌμ΄μ μμ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό ꡬμ±νλ€.
μ₯μ β
μ΄ν리μΌμ΄μ κ³Ό λΆλ¦¬νμ¬ μ»΄ν¬λνΈλ₯Ό κ°λ°νκ³ ν μ€νΈν μ μμΌλ©°, μ€νμΌ κ°μ΄λμ κ°μ λꡬμμ λ³Ό μ μλ€. κ·Έλ¦¬κ³ ν΅ν© κ°λ°μ ν λ, λ°±μλ μ΄ν리μΌμ΄μ μ λ‘μ§μ μμ‘΄νμ§ μλλ€λ μ₯μ μ΄ μλ€.
μΌλ ¨μ ν¨ν΄μ΄ ν립λλ©΄, μ€κ³ λ³κ²½μ΄ νμν κ²½μ°μ λλΉνμ¬ λ λΉ λ₯΄κ³ μ μ°μ± μλ λΉλ νλ‘μΈμ€λ₯Ό κ°μ§ μ μλ€. λν κΈ°μ‘΄μ μ»΄ν¬λνΈλ€μ μ¬μ¬μ©νκ³ μκΈ° λλ¬Έμ λμμΈμ μΌκ΄μ± μκ² ν΅μΌν μ μλ€.
νΉμ μ»΄ν¬λνΈμ CSSκ° κ°νκ² κ²°ν©λμ΄ μκΈ° λλ¬Έμ CSSλ₯Ό ν¨μ¬ μ κ΄λ¦¬ν μ μλ€. μ΄λ₯Ό μν΄μλ μ΄ν리μΌμ΄μ μ ꡬ쑰μ λ°λΌ μ»΄ν¬λνΈμμ μ¬μ©λλ CSSλ§ λ λλ§νλλ‘ ν΄μΌ νλ€.
λ¨μ β
μ»΄ν¬λνΈκ° λΆλ¦¬λμ΄ μκ³ μμ 컨ν μ΄λ μ»΄ν¬λνΈμ μ¬μ΄μ¦λ₯Ό κ²°μ ν μ μμ κ²½μ°, λ―Έλμ΄μΏΌλ¦¬λ₯Ό μ¬μ©νκΈ° μ΄λ ΅λ€. μ»΄ν¬λνΈλ λλΉμ λν΄ μ μ μκΈ° λλ¬Έμ μ€μ νμ΄μ§μ μ¬μ΄μ¦κ° λ³κ²½λ λ ν¬κΈ°κ° μ‘°μ λλ€.
μ΄ λ¬Έμ λ ν¬κΈ°λ₯Ό μ‘°μ ν μ μλ flex, grid μ κ°μ CSS μμ±μ ꡬνν λ μ΄μμ μ»΄ν¬λνΈλ₯Ό λμ νμ¬ ν΄κ²° ν μ μλ€.
λ§λ¬΄λ¦¬β
λ·°μ λΉμ¦λμ€ λ‘μ§μ λΆλ¦¬νλ κ²(κ΄μ¬μ¬μ λΆλ¦¬)μ΄ μ’μ λ°©λ²μ΄λ€. μ΄λ κ² νλ©΄ νλ‘μ νΈκ° νμ₯λ λ μ½λμμ λ¬Έμ λ₯Ό λλ²κΉ νκΈ° λ μ½λ€.
μ΄ν리μΌμ΄μ μ μ»΄ν¬λνΈλ€μ λμΌν μμκ³Ό ν¬κΈ°λ₯Ό κ°μ§ λΉ λ³μ΄λΌκ³ ν μ μλ€. κ°κ°μ λ³μ λ€λ₯Έ μμΌλ‘ μ±μ΄λ€κ³ μκ°ν΄λ³΄μ. μ΄ κ³Όμ μ μ»΄ν¬λνΈμ μνλ₯Ό μ λ°μ΄νΈνλ κ²μΌλ‘ λΉμ ν μ μλ€. λΉ λ³μ μμ μ±μ°λ κ²μ μ¬μ΄ μΌμ΄κ³ , μμ λ°κΎΈλ μν λ³κ²½μ΄ μλλΌλ λΉ λ³μ λ£μ μμ λ³κ²½νλ κ²μ΄κΈ° λλ¬Έμ μ¬μ΄ κ³Όμ μ΄ λ κ²μ΄λ€.
νμ§λ§ λ§μ½ λ³μ λΉ¨κ° μμΌλ‘ λ°μ―€ μ±μ°κ³ λ€λ₯Έ μμΌλ‘ λλ¨Έμ§λ₯Ό μ±μ΄λ€κ³ νλ€λ©΄ λ¬Έμ κ° μμ κ²μ΄λ€. κ·Έ μμ΄ μ μμ΄μ§ μλλ€λ©΄? λλ μλμ μμ μ κ±°νκ³ λ€λ₯ΈμμΌλ‘ λ체ν΄μΌνλ€λ©΄? μ΄κ²μ λΉμ¦λμ€ λ‘μ§μ ꡬνν λλ λ°μν μ μλ λ¬Έμ λ‘ μ½λ 리ν©ν°λ§κ³Ό μ»΄ν¬λνΈ μ¬μ¬μ©μ μ΄λ ΅κ² λ§λ λ€.