2.React State
React stateλ?
Reactμμ state(μν)λ components(κ΅¬μ± μμ) λ΄μμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νλ λ°©λ²μ΄λ€. κ΅¬μ± μμμ λ΄λΆ μνλ₯Ό λνλ΄λ©° κ΅¬μ± μμ μ체μμ μμ ν μ μλ€. κ΅¬μ± μμμ μνκ° λ³κ²½λλ©΄ Reactλ μλμΌλ‘ κ΅¬μ± μμμ ν΄λΉ νμ κ΅¬μ± μμλ₯Ό λ€μ λ λλ§νμ¬ μ λ°μ΄νΈλ μνλ₯Ό λ°μνλ€.
μ΄ μμμ Counter ꡬμ±μμλ useStateλ₯Ό μ¬μ©νμ¬ 0μΌλ‘ μ΄κΈ°νλ countλΌλ μν λ³μλ₯Ό μ μνλ€. λν μν κ°μ μ λ°μ΄νΈνκΈ° μν΄ setCount ν¨μλ₯Ό μ¬μ©νλ€.
λ²νΌμ ν΄λ¦νλ©΄ μ΅λͺ ν¨μκ° νΈμΆλλ©° setCount ν¨μλ₯Ό μ¬μ©νμ¬ count μν κ°μ μ λ°μ΄νΈνλ€. κ·Έλ° λ€μ Reactλ μ λ°μ΄νΈλ μν κ°μΌλ‘ κ΅¬μ± μμλ₯Ό λ€μ λ λλ§νμ¬ μ count κ°μ΄ νμλλλ‘ νλ€.
'useState'λ₯Ό μ¬μ©νλ©΄ ν΄λμ€ κ΅¬μ± μμλ κ΅¬μ± μμμ 'props'λ₯Ό μλμΌλ‘ μ‘°μν νμ μμ΄ κΈ°λ₯μ κ΅¬μ± μμμμ μν κ°μ μ μνκ³ μ λ°μ΄νΈν μ μλ€.
DRY μμΉ
"Don't Repeat Yourself"(DRY)λ μ½λ λ°λ³΅μ μ€μ΄κ³ κΈ°μ‘΄ μ½λμ μ¬μ¬μ©μ μ΅λννλ κ²μ μΉνΈνλ μννΈμ¨μ΄ κ°λ° μμΉμ΄λ€. μ΄ μμΉμ μ§μμ΄λ λ Όλ¦¬μ λͺ¨λ λΆλΆμ΄ μμ€ν λ΄μμ λ¨μΌνκ³ λͺ¨νΈνμ§ μμ ννμ κ°μ ΈμΌ νλ€κ³ λͺ μνλ€.
μ€μ λ‘ μ΄κ²μ μ½λλ₯Ό μμ±ν λ κ°λ°μκ° λμΌν κΈ°λ₯μ΄λ λ Όλ¦¬λ₯Ό μ¬λ¬ μμΉμ 볡μ νμ§ μμμΌ ν¨μ μλ―Ένλ€. μ΄λ μ½λ λΆνλ¦Ό, 볡μ‘μ± μ¦κ° λ° μ μ¬μ μΈ λ²κ·Έλ‘ μ΄μ΄μ§ μ μκΈ° λλ¬Έμ΄λ€. λμ κ³΅ν΅ κΈ°λ₯μ νμμ λ°λΌ μ½λλ² μ΄μ€ μ 체μμ μ¬μ©ν μ μλ μ¬μ¬μ© κ°λ₯ν λͺ¨λ, ν¨μ λλ ν΄λμ€λ‘ μΆμνλμ΄μΌ νλ€.
DRY μμΉμ λ°λ₯΄λ©΄ λ κΉ¨λνκ³ μ μ§ κ΄λ¦¬νκΈ° μ¬μ΄ μ½λλ₯Ό λ§λ€ μ μμΌλ©° λ²κ·Έκ° μ κ³ λ³κ²½μ΄ λ μ½λ€. λν λ Όλ¦¬κ° μ€μ μ§μ€νλκ³ μ½λλ² μ΄μ€ μ 체μ λΆμ°λμ§ μκΈ° λλ¬Έμ μ½λλ₯Ό λ μ½κ² ν μ€νΈνκ³ λ¦¬ν©ν°λ§ν μ μλ€.
리μ‘νΈμμ μμ νλ€λ³΄λ©΄ μμ°μ€λ½κ² μ΄ μμΉμ μ§ν€κ² λλ κ² κ°λ€. UIμμ μ νλ€λ³΄λ©΄ λμΌ ννμ UIλ₯Ό μ¬λ¬ νλ©΄μμ 보μ¬μ€μΌ νλ κ²½μ°κ° λ§μλ° μ΄λ΄κ²½μ°μ νλ©΄λ§λ€ μ»΄ν¬λνΈλ₯Ό μμ±νκ² λλ€λ©΄ κ΄λ¦¬ν΄μΌνλ μ»΄ν¬λνΈκ° μμ°μ€λ½κ² λμ΄λλκ±°κ³ κ·Έλ¬λ€λ³΄λ©΄ κ°μ μμ μ νλλΌλ μμ μμ μ νλ μ€μ κ°μ ννμ΄μ§λ§ λ€λ₯Έ λ²κ·Έκ° λ°μν μ λμλ€.
κ·Έλμ μμ μ νλ©΄μ λΉμ·ν νΌμ κ°μ§λ UIλλ λμΌν κΈ°λ₯μ κ°μ§λ ν¨μλ€μ 곡μ©μΌλ‘ λ°λ‘ μμ μ ν΄μ ν κ³³μμ μ μ§ λ³΄μ ν μ μλλ‘ μμ νλκ² μ€μνλ€κ³ μκ°λλ€.
SSOT(Single Source of Truth)
SSOT(Single Source of Truth)λ μμ€ν μ λͺ¨λ λ°μ΄ν° μ‘°κ°μ΄ μμ€ν λ΄μμ λͺ¨νΈνμ§ μμ λ¨μΌ ννμ κ°μ ΈμΌ νλ€κ³ λͺ μνλ μννΈμ¨μ΄ κ°λ° μμΉμ΄λ€. μ¦, λ°μ΄ν°λ νμν λͺ¨λ κ΅¬μ± μμμ μ‘μΈμ€ν μ μλ μ€μ μμΉμ μ μ₯λμ΄μΌ νλ©° μ΄ λ°μ΄ν°λ ν΄λΉ νΉμ μ 보μ λν μ μΌν μ 보 μμ€μ¬μΌ νλ€.
μ€μ λ‘ μ΄κ²μ μννΈμ¨μ΄λ₯Ό κ°λ°ν λ κ°λ°μκ° μμ€ν μ λ€λ₯Έ λΆλΆμ λμΌν λ°μ΄ν°μ μ¬λ¬ 볡μ¬λ³Έμ λμ§ μλλ‘ λ Έλ ₯ν΄μΌ νλ€λ κ²μ μλ―Ένλ€. μ΄λ λΆμΌμΉ, μ€λ₯ λ° λ¦¬μμ€ λλΉλ‘ μ΄μ΄μ§ μ μκΈ° λλ¬Έμ΄λ€. λμ λ°μ΄ν°λ ν΄λΉ λ°μ΄ν°μ μ λ’°ν μ μλ μμ€ μν μ νλ λ¨μΌ μμΉμ μ μ₯ν΄μΌ νλ€. μ ν리μΌμ΄μ μ νΉμ μꡬ μ¬νμ λ°λΌ λ°μ΄ν°λ² μ΄μ€, API λλ νμΌ μμ€ν μ΄ λ μ μλ€.
κ°λ°μλ SSOT μμΉμ λ°λΌ μ 체 μμ€ν μμ λ°μ΄ν°κ° μΌκ΄λκ³ μ΅μ μνμΈμ§ νμΈνμ¬ λ²κ·Έμ μ€λ₯λ₯Ό λ°©μ§ν μ μλ€. λν λ³κ²½ μ¬νμ μμ€ν μ 체μ 볡μ νλ λμ ν κ³³μμλ§ λ³κ²½νλ©΄ λλ―λ‘ λ°μ΄ν°λ₯Ό λ³΄λ€ μ½κ² ββκ΄λ¦¬νκ³ μ λ°μ΄νΈν μ μλ€.
μλ₯Ό λ€μ΄ κ³ κ° μ 보λ₯Ό νμνλ μΉ μ ν리μΌμ΄μ μμ SSOT μμΉμ λͺ¨λ κ³ κ° λ°μ΄ν°κ° μ ν리μΌμ΄μ μ λ°μ κ±Έμ³ μ¬λ¬ μμΉμ 볡μ λ기보λ€λ λ¨μΌ λ°μ΄ν°λ² μ΄μ€μ μ μ₯λμ΄μΌ νλ€κ³ μ μνλ€. μ΄λ κ² νλ©΄ μμ© νλ‘κ·Έλ¨μ λͺ¨λ λΆλΆμ΄ λμΌν μ΅μ μ λ³΄λ‘ μλνκ³ μ€λ₯λ λΆμΌμΉμ μνμ΄ μ€μ΄λ λ€.
useState
Reactμμ useStateλ κΈ°λ₯ κ΅¬μ± μμκ° μνλ₯Ό κ°μ§ μ μλλ‘ νλ hookμ΄λ€. μ΄μ μλ setStateλ₯Ό μ¬μ©νλ ν΄λμ€ κ΅¬μ± μμμμλ§ κ°λ₯νμλλ° μμ¦μ κΈ°λ₯μ κ΅¬μ± μμ(Functional components)μμ μνλ₯Ό μ μνκ³ μ λ°μ΄νΈνλ λ°©λ²μ μ 곡νλ€.
useState hookμ μ΄κΈ° μν κ°μ 맀κ°λ³μλ‘ μ¬μ©νκ³ νμ¬ μν κ°κ³Ό ν΄λΉ μν κ°μ μ λ°μ΄νΈνλ ν¨μμ λ κ°μ§ κ°μ΄ ν¬ν¨λ λ°°μ΄μ λ°ννλ€.
λ°°μ΄μ 첫 λ²μ§Έ κ°μ νμ¬ μν κ°μΌλ‘ κ΅¬μ± μμμ λ λλ§ λ©μλμμ μ‘μΈμ€νκ³ νμν μ μλ€. λ λ²μ§Έ κ°μ μν κ°μ μ λ°μ΄νΈνκΈ° μν΄ νΈμΆν μ μλ ν¨μλ‘, κ΅¬μ± μμκ° λ€μ λ λλ§λλλ‘ νλ€.
1κΈ κ°μ²΄(first-class object)λ?
νλ‘κ·Έλλ° μΈμ΄ μ€κ³μμ μΌκΈ κ°μ²΄(λλ μΌκΈ μλ―Ό)λ κ° λλ κ°μ²΄λ‘ μ·¨κΈλμ΄ λ§€κ°λ³μλ‘ μ λ¬λκ±°λ ν¨μμμ λ°νλκ±°λ λ³μμ ν λΉλ μ μλ μν°ν°λ₯Ό μ€λͺ νλ λ° μ¬μ©λλ μ©μ΄λ€.
κ°λ¨ν λ§ν΄μ μΌκΈ κ°μ²΄λ μΈμ΄μ λ€λ₯Έ κ°μ΄λ κ°μ²΄μ²λΌ μ‘°μν μ μλ μν°ν°λ€.
JavaScript λ° Pythonκ³Ό κ°μ μΌλΆ νλ‘κ·Έλλ° μΈμ΄μμλ ν¨μλ₯Ό μΌκΈ κ°μ²΄λ‘ μ·¨κΈνλ―λ‘ λ³μμ ν λΉνκ±°λ λ€λ₯Έ ν¨μμ μΈμλ‘ μ λ¬νκ±°λ ν¨μμμ κ°μΌλ‘ λ°νν μ μλ€. μ΄λ₯Ό ν΅ν΄ νλ‘κ·Έλλ°μ μ μ°μ±κ³Ό ννλ ₯μ λμΌ μ μλ€.
JavaScriptμμ ν¨μλ μΌκΈ κ°μ²΄λ‘ κ°μ£Όλλλ° μ¦, μΈμ΄μ λ€λ₯Έ κ°μ΄λ κ°μ²΄μ²λΌ μ·¨κΈλ μ μλ€. μ΄κ²μ νλ‘κ·Έλλ°μμ λ ν° μ μ°μ±κ³Ό ννλ ₯μ νμ©νλ€.
λ€μμ JavaScriptμμ ν¨μκ° μ΄λ»κ² μΌκΈ κ°μ²΄μΈμ§μ λν λͺ κ°μ§ μ
λ³μμ κΈ°λ₯μ ν λΉν μ μλ€.
ν¨μλ λ€λ₯Έ ν¨μμ λν μΈμλ‘ μ λ¬λ μ μλ€.
ν¨μλ λ€λ₯Έ ν¨μμ κ°μΌλ‘ λ°νλ μ μλ€.
μ μμ μμ ν¨μλ μΈμ΄μ λ€λ₯Έ κ°μ΄λ κ°μ²΄μ²λΌ μ·¨κΈλλ©° λ€μν λ°©μμΌλ‘ μ‘°μλ μ μλ€.
Lifting State Up
μν μ¬λ¦¬κΈ°(Lifting State Up)λ νμ κ΅¬μ± μμμ μνλ₯Ό μμ κ΅¬μ± μμλ‘ μ΄λνλ Reactμ κΈ°μ μ΄λ€. μ΄λ₯Ό ν΅ν΄ μ¬λ¬ νμ κ΅¬μ± μμκ° λμΌν μνλ₯Ό 곡μ νκ³ μ€μ μμΉμμ μνλ₯Ό μ λ°μ΄νΈν μ μλ€.
μ μμ μμ count μνλ ParentComponentμ μ μ₯λκ³ ChildComponent λ° AnotherChildComponentμ μν(props)μΌλ‘ μ λ¬λλ€. incrementCount ν¨μλ ChildComponentμ μν(props)μΌλ‘ μ λ¬λμ΄ μμ κ΅¬μ± μμμ μνλ₯Ό μ λ°μ΄νΈν μ μλ€.
μμ κ΅¬μ± μμκΉμ§ μνλ₯Ό λ€μ΄ μ¬λ¦¬λ©΄ μ¬λ¬ νμ κ΅¬μ± μμκ° λμΌν μνλ₯Ό 곡μ ν μ μμΌλ©° μ€μ μμΉμμ μν μ λ°μ΄νΈλ₯Ό μ²λ¦¬ν μ μλ€. μ΄λ₯Ό ν΅ν΄ μ½λλ₯Ό λ³΄λ€ μ²΄κ³ννκ³ μ μ§ κ΄λ¦¬νκΈ° μ½κ² λ§λ€ μ μμΌλ©° μΌκ΄μ± μλ μνλ‘ μΈν΄ λ°μνλ λ²κ·Έμ μνμ μ€μΌ μ μλ€.
Last updated