3. VirtualDOM
κ°μ DOMμ λν΄μ μ΄ν΄νκΈ° μ μ DOMμ λν΄μ μμ보μ.
DOM μ΄λ?
HTML μμλ€μ λ΄κ³ μλ μΉνμ΄μ§λ₯Ό Document λΌκ³ λΆλ₯Έλ€. DOMμ μ΄λ¬ν HTML μμλ€μ νΈλ¦¬ ννλ‘ ννν κ²μ λ§νλ€. DOMμ Document Object Model μ μ½μ΄μ΄λ©°, κ° νΈλ¦¬λ λ Έλ(Node)λ‘ κ΅¬μ±λμ΄μλ€. DOMμ λͺ¨λ κ²μ λ Έλμ΄λ€.
Document Node(λ¬Έμ λ Έλ)
λ¬Έμ μ 체λ₯Ό λνλ΄λ λ Έλ
Element Node(μμ λ Έλ)
HTML μμλ₯Ό λνλ΄λ λ Έλ
Attribute Node(μμ± λ Έλ)
HTML μμμ μμ±μ λνλ΄λ λ Έλ
Text Node(ν μ€νΈ λ Έλ)
HTML μμμ ν μ€νΈλ₯Ό λνλ΄λ λ Έλ
Virtual DOM μ΄λ?
λ§κ·Έλλ‘ κ°μμ DOMμ΄λ©°, μ€μ DOMμ 볡μ λ³Έμ΄λ€. μ€μ DOMμ μ‘°μνμ¬ HTML μμλ₯Ό λ³κ²½νλ €λ©΄ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μΉκ² λλ€.
> HTML element λ₯Ό μ ν
> μμ± λ³κ²½
> μλ‘μ΄ HTML element μμ μμ±
> μμ±λ HTML element μΆκ°
> κΈ°μ‘΄μ HTML element μ κ±°
μ΄λ¬ν μ§μ μ μΈ DOM μ‘°μμ, React μμλ κ°μ DOMμ ν΅ν΄μ μννλ€. κ°μ DOMμ΄κΈ° λλ¬Έμ κ°μ μ μΌλ‘ μ‘°μνλ©°, μ΄λ₯Ό ν΅ν΄μ μ±λ₯μ ν₯μμν¨λ€. Reactμμλ μνμ κ°μ DOMμ ν΅ν μΆμνλ₯Ό ν΅ν΄ λ³νλ₯Ό κ°μ§νκ³ μ΅μνμ DOM μ‘°μμ μννμ¬ μ±λ₯μ ν₯μμν¨λ€.
κ°μ DOMμ νμ©νμ¬ μ΄λ»κ² DOM μ‘°μμ νλκ°?
리μνΈλ νμ λκ°μ κ°μλ κ°μ²΄λ₯Ό κ°μ§κ³ μλ€.
λ λλ§ μ΄μ νλ©΄ ꡬ쑰λ₯Ό λνλ΄λ κ°μλ
λ λλ§ μ΄νμ 보μ΄κ² λ νλ©΄ ꡬ쑰λ₯Ό λνλ΄λ κ°μλ
κ·Έλ¦¬κ³ λ¦¬λ λλ§μ΄ μΌμ΄λ λ λ§λ€ μλ‘μ΄ λ΄μ©μ΄ λ΄κΈ΄ κ°μ DOMμ μμ±νλ€. λλλ§ μ΄μ κ³Ό μ΄νμ κ°μ DOMμ λΉκ΅νμ¬ μ΄λ€ HTML μμκ° λ³κ²½λμλμ§ λΉκ΅νλ€. React λ μ΄κ²μ μν΄μ Diffing Algorithm λ₯Ό μ¬μ©νλ€.
React μμ μ»΄ν¬λνΈκ° 리λ λλ§ λ λ
μν(state) λ³κ²½, μμ±(props) λ³κ²½, λΆλͺ¨ μ»΄ν¬λνΈμ 리λ λλ§, μ»΄ν¬λνΈ μλͺ μ£ΌκΈ° λ©μλ νΈμΆ, 컨ν μ€νΈ(Context) λ³κ²½
μ΄ κ³Όμ μ ν΅ν΄μ λ³κ²½ν΄μΌ νλ λΆλΆλ§ μ€μ DOMμ μ μ©νλ€. μ΄ κ³Όμ μ Reconciliation(μ¬μ‘°μ ) μ΄λΌκ³ νλ€. κ·Έλ°λ° μ¬κΈ°μ μμμΌ ν μ μ, μ΄λ¬ν λ³κ²½λ λͺ¨λ HTML μμλ€μ ν λ²μ μ€μ DOMμ μ μ©νλ€λ μ¬μ€μ΄λ€.
μ΄λ€ νμ΄μ§μ HTML μμλ€μ΄ 1κ°κ° λ³κ²½λλμ§ 10κ°κ° λ³κ²½λλμ§ μκ΄μμ΄, μ΄λ₯Ό ν λ²μ κ°μ§νκ³ μ€μ DOMμ μ μ©μν¨λ€. μ¦, 10κ°κ° λ³κ²½λμμ λ μ€μ DOMμ μ μ©μν€λ κ²μ 10λ² λ°λ³΅νμ§ μλλ€λ κ²μ΄λ€.
κ·Έλ¬λ, κ°μ DOMμ μ¬μ©νλ μ΄μ κ° νΌν¬λ¨Όμ€κ° μ’μμλ μλλΌκ³ νλ€. λΉ¨λΌμ μ¬μ©νλ κ²μ΄ μλλΌ(μΆ©λΆν λΉ λ₯΄κΈ΄ νλ€), μ μ§λ³΄μμ±μ΄ λ°μ΄λ κ²μ΄ ν΅μ¬μ΄λΌλ κ²μ΄λ€. λ¨μ§, κ°μ DOMμ΄ λ¬΄μμ΄κ³ μ μ°λμ§ μ΄ν΄νμλ€λ©΄, μ΅μ ν ν μ μλ κΈ°λ²μ΄ μ‘΄μ¬νλ€.
μ°Έμ‘°: Virtual DOM (React) ν΅μ¬μ 리
Last updated