Hydration
μ μ°λ¦¬λ§λ‘ μ§μνλ©΄ μν, μλΆλ³΄μΆ© λ±μΌλ‘ λ²μλ μ μλ€. μ΄λ»κ² 보면 μμ£Ό μ§κ΄μ μΈ λ¨μ΄λΌκ³ ν μ μμ κ²μ΄λ€. React
μμ hydration
μ΄λΌλ μ©μ΄λ μ μ¬μ©λκ³ μ΄λ€ μν μ νλμ§ μμ보λλ‘ νμ.
React
λ DOM
μ μ»΄ν¬λνΈλ₯Ό λ λλ§ ν΄μ£Όλ render
λΌλ λ©μλλ₯Ό μ 곡ν΄μ£Όκ³ μλ€.
ReactDOM.render(element, container, [callback]);
μ΄ render
ν¨μλ container
μ μμμΌλ‘ react componentλ₯Ό λ£κ²λλλ°, κΈ°μ‘΄μ μ΄λ―Έ rendering
λ react componentκ° μλ€λ©΄ μλ‘ λ λλ§ νλκ² μλκ³ updateλ§ μ§νν΄μ€λ€. κ·Έλ¦¬κ³ renderingμ΄ μλ£λλ©΄ μΈλ²μ§Έ νλΌλ―Έν°λ‘ μ λ¬λ callback
μ΄ μ€νλκ² ν μ μλ€.
ReactDOM.hydrate(element, container, [callback]);
hydrate()
ν¨μλ νΉμ μ»΄ν¬λνΈλ₯Ό λλ²μ§Έ νλΌλ―Έν°μΈ μ§μ λ DOM
μμμ νμλ‘ hydrate
μ²λ¦¬λ§ νλ€. μ΄λ rendering
μ ν΅ν΄ μλ‘μ μΉ νμ΄μ§λ₯Ό ꡬμ±ν DOM
μ μμ±νλκ²μ΄ μλλΌ, κΈ°μ‘΄ DOM Tree
μμ ν΄λΉλλ DOM
μμλ₯Ό μ°Ύμ μ ν΄μ§ javascript
μμ± (ex)event listerner
)λ€λ§ λ§€ννκ² λ€λ λ§μ΄λ€. μ¦, rendering
μ νμ§μκ³ event handler
λ§ λΆμ¬μ€λ€.
Server side rendering
μ ν΄μ μ΄λ―Έ mark up
μ΄ μμ±λμ΄μλ κ²½μ°μλ κ΅³μ΄ render
λ₯Ό μ¬μ©ν νμκ° μλ€. μ΄λ hydrate
μΌλ‘ ν¨μλ€λ§ λΆμ¬μ£Όλ κ²μ΄λ€.

SSR
μ λμ μμλ₯Ό 보μ. server
λ μμ±λ HTML
μ λ΄λ €μ€λ€. κ·Έλ¦¬κ³ λμ JS
μ€νμ΄ λλ©΄μ react
κ° HTML
κ³Ό store
λ₯Ό react component
μ store
λ‘ λ³ννλ κ³Όμ μ΄ μΌμ΄λλλ° μ΄λ₯Ό hydrate
λΌκ³ νλ€. λ©λ§λ₯Έ νλ©΄μ μνΈμμ©κ³Ό event handler
λ‘ μλΆλ³΄μΆ©μ ν΅ν΄ λμ μΈ μνλ‘ λ³νν κ²μ΄λ€. νμ§λ§ μ΄λ hydrate
κ° μΌμ΄λλ©΄μ λΆνμν νλ©΄μ΄ κ·Έλ €μ§λ νμμ΄ λ°μνλ€. μ΄λ―Έ server
μμ μμ±λ HTML
μ΄ λ΄λ €μ¨ κ²μ react
λ μμ§ λͺ»νκΈ° λλ¬Έμ΄λ€. κ·Έλμ SSR
μ νλ κ²½μ°μλ ReactDOM
μ hydrate
λ©μλλ₯Ό μ¬μ©ν΄μΌ νλ€.
(server
μμ νλ² rendering
νκ³ client
μμ νλ² λ rendering
νλ©΄ λΉν¨μ¨μ μΈ λ°©μμ΄ μλκ° μκ°ν μ μλ€. νμ§λ§ server
λ¨μμ λΉ λ₯΄κ² rendering
μ νκ³ μ μ μκ² λΉ λ₯Έ μΉ νμ΄μ§λ‘ μλ΅ν μ μλ€λ κ²μ λμ± ν° μ΄μ μ κ°μ Έκ° μ μλ€. μ΄λ pre-rendering
ν DOM
λ€μ λͺ¨λ JS
μνΈμμ©μ΄ λΉ μ§ κ΅μ₯ν κ°λ²Όμ΄ μνμ΄λ―λ‘ λμ± λΉ λ₯Έ λ‘λ©μ΄ κ°λ₯νλ€)
react
λ server
μ client
μμ rendering
λλ 컨ν
μΈ κ° λμΌν κ²μ΄λΌ μμνλ€. κ°λ°λͺ¨λμμ react
κ° hydration
μ€ λΆμΌμΉμ λν΄ warningμ 보μ¬μ£Όλ λͺ¨μ΅μ κ°λμ© κ²½νν΄λ³΄μμ κ²μ΄λ€.
- https://ko.reactjs.org/docs/react-dom.html