đ React āĻ Hydration āĻā§?
āĻāĻŽāϰāĻž āĻāĻžāύāĻŋ, React āĻŽā§āϞāϤ āĻāĻāĻāĻŋ client-side libraryāĨ¤ āĻāĻŋāύā§āϤ⧠Server-Side Rendering (SSR) āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻŽāϰāĻž React āĻāĻŽā§āĻĒā§āύā§āύā§āĻāĻā§āϞ⧠server āĻ āϰā§āύā§āĻĄāĻžāϰ āĻāϰ⧠client āĻ static HTML āĻĒāĻžāĻ āĻžāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤ āĻāĻŋāύā§āϤ⧠āĻĒā§āϰāĻļā§āύ āĻšāĻā§āĻā§:
React āϏā§āĻ static HTML āĻā§ interactive āĻāĻŋāĻāĻžāĻŦā§ āĻŦāĻžāύāĻžā§? đ¤
āĻāĻāĻžāĻ āĻšāϞ⧠Hydration!
đ Hydration āĻāĻŋ?
Hydration āĻšāϞ⧠āϏā§āĻ āĻĒā§āϰāĻā§āϰāĻŋā§āĻž, āϝā§āĻāĻžāύ⧠server-rendered static HTML āĻā§ client-side āĻ interactive āĻŦāĻžāύāĻžāύ⧠āĻšā§, React āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§āĨ¤ React event listeners āĻāĻŦāĻ state āϝā§āĻā§āϤ āĻāϰ⧠āĻāĻ HTML āĻā§ āĻĒā§āϰā§āĻĒā§āϰāĻŋ interactive āĻāϰ⧠āϤā§āϞā§āĨ¤
āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
Server Render: Server React āĻāĻŽā§āĻĒā§āύā§āύā§āĻāĻā§āϞā§āĻā§ HTML āϤ⧠āϰā§āύā§āĻĄāĻžāϰ āĻāϰ⧠āĻāĻŦāĻ āĻŦā§āϰāĻžāĻāĻāĻžāϰ⧠āĻĒāĻžāĻ āĻžā§āĨ¤
Initial Load: āĻŦā§āϰāĻžāĻāĻāĻžāϰ āϏā§āĻ static HTML āϰāĻŋāϏāĻŋāĻ āĻāϰ⧠(āĻāĻāύ⧠React functionality āύā§āĻ)āĨ¤
Hydration: React āĻŦā§āϰāĻžāĻāĻāĻžāϰ⧠āϞā§āĻĄ āĻšā§ā§ āϏā§āĻ HTML āĻā§ "hydrate" āĻāϰā§, āĻāĻā§āύā§āĻ āϞāĻŋāϏā§āύāĻžāϰ āĻāĻŦāĻ āϏā§āĻā§āĻ āϝā§āĻā§āϤ āĻāϰā§āĨ¤
Interactivity: āĻāĻāύ HTML āĻĒā§āϰā§āĻĒā§āϰāĻŋ interactive āĻšā§ā§ āĻāĻ ā§ â āĻŦāĻžāĻāύ āĻā§āϞāĻŋāĻ āĻāϰāĻž, state āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāĻā§āĻž, React āĻāϰ magic āĻāϞ⧠āĻāϏā§! đŠâ¨
đĄ Hydration āĻā§āύ āĻĒā§āϰā§ā§āĻāύ?
*Hydration āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āϝ⧠: *
- Static HTML āϝāĻž server āĻĨā§āĻā§ āĻāϏā§āĻā§, āϏā§āĻāĻŋ interactive āĻšā§ā§ āĻāĻ ā§ āĻŦā§āϰāĻžāĻāĻāĻžāϰā§āĨ¤
- React āϤāĻžāϰ Virtual DOM āĻā§ server-rendered HTML āĻāϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞāĻŋā§ā§ client-side React app āĻā§ āĻāĻžāϰā§āϝāĻāϰ⧠āĻāϰ⧠āϤā§āϞā§āĨ¤
- Hydration āĻāĻžā§āĻž, āϤā§āĻŽāĻžāϰ āĻĒā§āĻ static āĻĨāĻžāĻāĻŦā§, āϝā§āĻāĻžāύ⧠āĻāĻāĻāĻžāϰ āĻā§āύ⧠interactivity āĻāĻĒāĻā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§ āύāĻž (āϝā§āĻŽāύ, āĻŦāĻžāĻāύ⧠āĻā§āϞāĻŋāĻ āĻāϰāĻž, āĻĢāϰā§āĻŽā§ āĻāĻžāĻāĻĒ āĻāϰāĻž, āĻŦāĻž UI āĻāĻĒāĻĄā§āĻ āĻšāĻā§āĻž āϝāĻžāĻŦā§ āύāĻž)āĨ¤
đĨ Hydration āĻĒā§āϰāĻā§āϰāĻŋā§āĻž āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
- Initial Render: Server HTML āϰā§āύā§āĻĄāĻžāϰ āĻāϰ⧠â āĻŦā§āϰāĻžāĻāĻāĻžāϰ static āĻāύā§āĻā§āύā§āĻ āĻĒāĻžā§āĨ¤
- Hydration: React āĻāĻā§āύā§āĻ āϞāĻŋāϏā§āύāĻžāϰ āĻāĻŦāĻ āϏā§āĻā§āĻ āϝā§āĻā§āϤ āĻāϰā§āĨ¤
- State Changes: React state āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻ āύā§āϝāĻžā§ā§ UI āĻāĻĒāĻĄā§āĻ āĻāϰā§, āϝāĻž dynamic interactivity āĻĻā§ā§āĨ¤
â ī¸ Hydration Error āĻāĻāύ āĻšā§?
Hydration error āϤāĻāύ āĻāĻā§ āϝāĻāύ server-generated HTML āĻāĻŦāĻ client-rendered HTML āĻāϰ āĻŽāϧā§āϝ⧠āĻŽā§āϝāĻžāĻ āύāĻž āĻāϰā§āĨ¤
- āϝā§āĻŽāύ: āϝāĻĻāĻŋ āϤā§āĻŽāĻŋ Math.random() āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϤāĻžāĻšāϞ⧠server-āĻ āϝ⧠āĻā§āϝāĻžāϞ⧠āϤā§āϰāĻŋ āĻšāĻŦā§ āϤāĻž client-āĻ āϤā§āϰāĻŋ āĻšāĻā§āĻž āĻā§āϝāĻžāϞā§āϰ āϏāĻžāĻĨā§ āĻŽā§āϞāĻžāĻŦā§ āύāĻžāĨ¤
- āĻāĻ mismatch āĻāϰ āĻāĻžāϰāĻŖā§ hydration error āĻšā§, āĻāĻžāϰāĻŖ React āĻāĻļāĻž āĻāϰ⧠āϝā§, server-rendered āĻāĻŦāĻ client-rendered HTML āĻāĻ āĻšāϤ⧠āĻšāĻŦā§āĨ¤
đ Hydration āĻĒā§āϰāĻā§āϰāĻŋā§āĻž: āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻāĻŋāĻĒāϏ
- Hydration āĻļā§āϧā§āĻŽāĻžāϤā§āϰ client-side āĻĒā§āϰāĻā§āϰāĻŋā§āĻž, āϝāĻž āĻĒā§āϰāĻĨāĻŽ āϰā§āύā§āĻĄāĻžāϰ āĻšāĻā§āĻžāϰ āĻĒāϰ āĻāĻā§āĨ¤
- React event listeners, state āϝā§āĻ āĻāϰ⧠āĻāĻŦāĻ āĻ ā§āϝāĻžāĻĒāĻāĻŋāĻā§ interactive āĻāϰ⧠āϤā§āϞā§āĨ¤
- Hydration error āϤāĻāύ āĻāĻā§, āϝāĻāύ server-generated HTML āĻāĻŦāĻ client-rendered HTML āĻāϰ āĻŽāϧā§āϝ⧠mismatch āĻšā§āĨ¤
đ āϏāĻāĻā§āώā§āĻĒā§:
Hydration āĻšāϞ⧠server-rendered static HTML āĻā§ dynamic, interactive React app āĻ āĻĒāϰāĻŋāĻŖāϤ āĻāϰāĻžāϰ āĻĒā§āϰāĻā§āϰāĻŋā§āĻžāĨ¤ āĻāĻāĻž āĻŦā§āĻāϞ⧠āϤā§āĻŽāĻŋ SSR (Server-Side Rendering) āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻā§āϞā§āĻā§ āĻāϰāĻ āĻāĻžāϞāĻāĻžāĻŦā§ āĻ āĻĒāĻāĻŋāĻŽāĻžāĻāĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āĨ¤ đ