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