React - Hydration์ Helmet์ด๋?
React Hydration
Hydration๋ React๊ฐ SSR์ ํ ์ ์๋๋ก
, HTML ์ฝ๋์ JS ์ฝ๋๋ฅผ ์๋ก ๋งค์นญ์์ผ ๋์ ์ธ ์น์ฌ์ดํธ๋ฅผ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋งํ๋ ๊ธฐ์ ์ด๋ค.
Next.js๋ React์์ v16๋ถํฐ ์ ๊ณตํ๋ hydrate ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ์ด๋ฌํ ์๋ฃจ์ ์ ์ฑ๊ณต์ ์ผ๋ก ์ ๊ณตํ๋ค.
๋ค๋ฅธ ๋ง๋ก๋ ์๋ฒ ์ธก์์ ์ ๊ณต๋ HTML์ ์ฌ์ฌ์ฉํ๊ณ ํด๋น DOM ์์์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ฐ๊ฒฐํ๋ ์์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
hydrate
๋ ReactDOM์ ํจ์์ธ๋ฐ ๋ฆฌ์กํธ ํ๋ก์ ํธ ๊ตฌ์ถ ์, ์ด๋ฐ์ ๊ผญ ์์ฑํด์ฃผ๋ render ํจ์์ ์ ๊น ๋น๊ตํด๋ณด๋ฉด
ReactDOM.render
๋ hydration
์ ์ํํ์ง ์์ง๋ง ReactDOM.hydrate
๋ฅผ ์ฌ์ฉํ์ฌ hydration
์ ์ํํ ์ ์๋ค.
import { App } from './src/app';
ReactDOM.hydrate(<App />, document.getElementById('app'));
ReactDOM.hydrate
๋ ReactDOM.render
์ ๋์ผํ๊ฒ ๋์ํ์ง๋ง ์๋ฒ ์ธก์์ ์ ๋ฌ๋ฐ์ HTML์ ์ฌ์ฉํ๋ค.
React Helmet
React๋ ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์
(Single Page Application, SPA)์ด๋ผ, React๋ก ๊ตฌ์ถ๋ ์น ์ฌ์ดํธ์ ๊ฒฝ์ฐ ํฌ๋กค๋ฌ๋ค์ด ๋จ ํ๋์ ํ์ผ public/index.html
๋ง์ ์ฝ๊ฒ ๋๋ค.
์ด์ฒ๋ผ ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ํ์ด์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ฝ์ง ๋ชปํ๋ค
๋ ๋จ์ ์ด ์๋ค.
์ด๋ฌํ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด์๋ react-helmet ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ดํธ์ ๋ํ ๋ฉํ ํ๊ทธ๋ค์ ์ฝ์ ์ ์๊ฒ ๋ง๋ค ์ ์๋ค.
ํจ๊ป๋ณด๋ฉด ์ข์ ๊ธ
๊ฒ์์์ง์ต์ ํ(Search Engine Optimization, SEO)
์ฐธ๊ณ ๋งํฌ
React์ Hydration์ ๋ํ์ฌ
react-helmet์ผ๋ก ํ์ด์ง๋ณ SEO ๋ฉํํ๊ทธ ์ค์ ํ๊ธฐ