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