Closed hyeyoonS closed 2 months ago
Hydration์ ๋งํ๊ธฐ์ ์์, Next.js์์ SSR์ ์คํ ๊ณผ์ ์ ์ดํด๋ณผ ํ์๊ฐ ์์ต๋๋ค.
๋จผ์ ํ๋ก ํธ ์๋ฒ๋จ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์๋ ์๋ฒ์ ์์ฒญํด ๊ฐ์ ธ์จ ํ, ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด ํ๋ก ํธ ์๋ฒ์์ HTML์ ๋ ๋๋งํฉ๋๋ค.
์ดํ ํ๋ก ํธ ์๋ฒ์์ ์์ฒญํ ํ์ด์ง์ ํ์ํ HTML, CSS, JavaScript ์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ด๊ณ , ์ฌ์ฉ์๋ ์ธํฐ๋์
ํ ์ ์๋ HTML, CSS ์ฝ๋๋ก ๊ทธ๋ ค์ง ํ๋ฉด์ ๋ณด๊ฒ ๋ฉ๋๋ค.
์ด ๋ค์์ ๋ฆฌ์กํธย hydrate
ย ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ๋น๋ก์ ์ฌ์ฉ์๋ ์ธํฐ๋ ์
์ด ๊ฐ๋ฅํด์ง๋๋ค.
hydration์ ์๋ฒ์์ ๋ ๋๋ง๋ HTML์ ๊ธฐ๋ฐํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์์ JavaScript ์ด๋ฒคํธ์ ์ํ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ณผ์ ์ ๋งํฉ๋๋ค. hydration์ด ์๋ค๋ฉด ์๋ฒ์ธก์์ ๋ ๋๋ง๋ HTML์ ๋ฌด์ํ๊ณ ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ก ๋ ๋๋ง์ด ํ์ํ๋ฐ, hydration์ ํตํด ์ด๋ฌํ ๊ณผ์ ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
Next.js๋ ๋ฆฌ์กํธ์ hydrate๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๋ฆฌ์กํธ๋ hydrate
ํ ๋ ๋ ๋๋ง๋ ์ฝํ
์ธ ๊ฐ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๋์ผํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
์ด ๋ Next.js์์ SSG ๋๋ SSR๋ก ์๋ฒ์ธก์์ ๋ ๋๋ง๋ ๋ฆฌ์กํธ ํธ๋ฆฌ์ ๋ธ๋ผ์ฐ์ ์์ ์ฒ์ ๋ ๋๋งํ ๋ฆฌ์กํธ ํธ๋ฆฌ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ์ hydration ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ์
๋๋ค.
์ฐ์ Hydration๋ผ๋ ๋จ์ด์ ๋ป์ ์๋ถ๊ณต๊ธ ์ ๋๋ค. ์ ์ด๋ฐ ์ฉ์ด๋ฅผ ์ฌ์ฉํ ๊น์?
Server Side Rendering์ ํ๊ฐ์ง ๋ฌธ์ ๊ฐ ์๋๋ฐ, HTML์ ๊ทธ๋ ค์ค ์๋ ์์ด๋ ์ค์ ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋๋ง ํ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ Javascript์ ์ฝ๋๋ฅผ DOMElement์ ๋งค์นญ์์ผ์ ๋์ ์ธ ํ์ด์ง๋ฅผ ๊ตฌํํ์ง๋ ๋ชปํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋์ SSR๋ก ์ธํด ๋ ๋๋ง ๋ HTML ํ์ด์ง๋ ๋ผ๋๋ง ์กด์ฌํ๋ ๋ฐ์น ๋ง๋ฅธ ํํ๋ก ์กด์ฌํ๊ฒ ๋๋๋ฐ ์ด๋ ๊ฒ ๊ฑด์กฐํ ์น ํ์ด์ง์ ์๋ถ ๊ณต๊ธ์ ํด์ฃผ์ด ์ ์ ์ธ ํ์ด์ง๋ฅผ ๋์ ์ธ ํ์ด์ง๋ก ๋ณํ ํ ํ์๊ฐ ์์ต๋๋ค. ์ด ์์ ์ Hydration์ด๋ผ๊ณ ํฉ๋๋ค.
ReactDOM.hydrate()
)SSR ๋๋ SSG์ ๊ฐ์ ๋ ๋๋ง ๊ธฐ๋ฒ์์ ์ฌ์ฉ๋๋ ํ๋ก์ธ์ค. ์๋ฒ์์ HTML์ ๋ฏธ๋ฆฌ ์์ฑํ๊ณ ํด๋ผ์ด์ธํธ ์ธก์์ JS์ ์ฐ๊ฒฐํ๋ ์์ ์ ์๋ฏธํ๋ค. Hydration์ ์ด๊ธฐ ๋ ๋๋ง ์ดํ ๋์ ์ธ ์ฌ์ฉ์ ์ธํฐ๋ ์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ค์ํ ๋จ๊ณ์ด๋ค.
Next.js์์๋ ํ์ด๋๋ ์ด์ ํ๋ก์ธ์ค๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌ๋๋ค. SSR์ด๋ SSG๋ก ํ์ด์ง๋ฅผ ๋ ๋๋งํ๊ณ ํด๋ผ์ด์ธํธ ์ธก์์ ํ์ด์ง๋ฅผ hydrateํ์ฌ ์์ ํ ์ธํฐ๋ํฐ๋ธ ์ฑ์ผ๋ก ์ ํ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก Next.js๋ ์ด๊ธฐ ๋ก๋ฉ ์ฑ๋ฅ์ ์ ์งํ๋ฉด์๋ ํ์์ ๋ฐ๋ผ ๋ฆฌ์นํ ์ธํฐ๋ํฐ๋ธ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๋ค. ๋ชจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ ํต์ฌ ๊ธฐ์ ์ค ํ๋์.
Hydration์ด๋ ์๋ถ์ ๋ณด์ถฉํ๋ค๋ ๋ป์ผ๋ก ์๋ฒ์์ ๋ ๋๋ง ๋ html์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ด๋ฒคํธ์ ์ํ๋ฅผ ๋ณด์ถฉํ๋ค๋ ๋ป์ ๋๋ค. SSR์ ์๋ฒ์์ ๋ ๋๋ง๋ html๊ณผ ๋ฒ๋ค๋ง๋ ์๋ฐ์คํฌ๋ฆฝ๋ฅผ ๋ฐ์ ๋ธ๋ผ์ฐ์ ์์ ์ฐ๊ฒฐํ๋ ๊ณผ์ ์ธ hydration์ด ํ์ํฉ๋๋ค. Hydration์ผ๋ก ์ฌ์ฉ์๋ ๋น ๋ฅด๊ฒ ๋ ๋๋ง๋ html์ ํ๋ฉด์ ๋ณผ ์ ์์ผ๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฒคํธ์ ์ํ ๊ด๋ฆฌ๋ฅผ ํตํด ๋์ ์ธ ์ํธ์์ฉ์ ํ ์ ์์ต๋๋ค.
๐ ์ง๋ฌธ
Hydration ์ด ๋ญ๊ฐ์?
โ ๊ตฌ์ ๋ต๋ณ ํค์๋
โ ์์ ๋ต๋ณ
Hydration์ด๋?
Hydration ๋ป
โ์๋ถ ๊ณต๊ธโ์ด๋ผ๋ ์๋ฏธ๋ก, ์ฌ์ ๋ ๋๋ง ๊ณผ์ ์ฒ๋ผ โ๊ฑด์กฐํ๊ณ ๊ฐ๋จํโ html ํ์ผ์์ javascript(react)๋ก ์ธํฐ๋์ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์์ด, โ๋ฌผโ์ ์ฃผ์ด ์ธํฐ๋ํฐ๋ธํ๊ฒ ๋ง๋ค์ด์ค๋ค๋ ์๋ฏธ.
Hydration์ด๋ ๋ฆฌ์กํธ์์ SSR, SSG์ ์คํํ์ฌ HTML ๊ฒฐ๊ณผ๋ฌผ์ ๋ฐ์์จ ๋ค, ReactDOM.hydrate ํจ์๋ฅผ ํ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ๋ฆฌ์กํธ ํธ๋ฆฌ์ ๋ง๊ฒ ํ์ฑํ๋ ํ์.
๊ฐ๋ตํ๊ฒ ๋ณด๋ฉด
Next.js์์์ ํ์ด๋๋ ์ด์
Hydration์ ์ฅ์
ํผํฌ๋จผ์ค ์ต์ ํ: ์ฌ์ฉ์๋ ์๋ฒ์์ ๋ ๋๋ง๋ HTML์ ํตํด ์ฆ์ ์ปจํ ์ธ ๋ฅผ ๋ณผ ์ ์์ผ๋ฉฐ, JS๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ฑ๋์ด ์ฒ๋ฆฌ๋๋ค. ๋ก๋ ํ์์ ๊ฐ์ ํจ. SEO ๊ฐ์ : ์๋ฒ์์ ๋ ๋๋ง๋ HTML์ ๊ฒ์ ์์ง์ด ์ฝ๊ฒ ํฌ๋กค๋งํ ์ ์์ด SEO์ ์ ๋ฆฌํจ ์ฌ์ฉ์ ๊ฒฝํ ํฅ์: ์ด๊ธฐ ์ปจํ ์ธ ๋ก๋ฉ์ด ๋น ๋ฅด๊ณ , ๋์ ์ธํฐ๋ ์ ์ ํ์ด์ง๊ฐ ์์ ํ ๋ก๋๋ ํ ํ์ฑํ๋๋ฏ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ด ํฅ์๋จ.
ReactDOM.hydrate๊ฐ ํ๋ ์ผ
์ฐธ๊ณ ์๋ฃ
https://helloinyong.tistory.com/315 https://fourwingsy.medium.com/next-js-hydration-์คํ์ผ-์ด์-ํผํด๊ฐ๊ธฐ-988ce0d939e7(https://fourwingsy.medium.com/next-js-hydration-%EC%8A%A4%ED%83%80%EC%9D%BC-%EC%9D%B4%EC%8A%88-%ED%94%BC%ED%95%B4%EA%B0%80%EA%B8%B0-988ce0d939e7)