Hydration ๊ฐ์
TanStack Query
dehydrate/hydrate์๋ ์ํ ๋ณต์
์ ์ฒด ๋ฌธ์ Hydration
document ๋ ๋ฒจ์์ ํ SSR
Date ์ง๋ ฌํ
dateReviver์๋ ๋ณํ
์ ํ์ ๋นํ์ฑํ
disableHydrateCSR ์ ํ
Sonamu Hydration ํ๋ก์ธ์ค
1. ์๋ฒ: Dehydration
์๋ฒ์์ Query์ํ๋ฅผ ์ง๋ ฌํํฉ๋๋ค.2. HTML์ ๋ฐ์ดํฐ ์ฃผ์
3. ํด๋ผ์ด์ธํธ: Hydration
ํด๋ผ์ด์ธํธ์์ ์ํ๋ฅผ ๋ณต์ํ๊ณ React๋ฅผ ํ์ฑํํฉ๋๋ค.Date ์ง๋ ฌํ ์ฒ๋ฆฌ
๋ฌธ์ : Date ๊ฐ์ฒด๋ JSON.stringify๋ก ๋ฌธ์์ด์ด ๋จ
ํด๊ฒฐ: dateReviver
Sonamu๋ ์๋์ผ๋ก ISO ๋ ์ง ๋ฌธ์์ด์ Date ๊ฐ์ฒด๋ก ๋ณํํฉ๋๋ค.Hydration Mismatch ๋ฐฉ์ง
๋ฌธ์ : ์๋ฒ์ ํด๋ผ์ด์ธํธ์ HTML์ด ๋ค๋ฅด๋ฉด ์๋ฌ
ํด๊ฒฐ 1: useEffect ์ฌ์ฉ
ํด๊ฒฐ 2: suppressHydrationWarning
์๋์ ์ผ๋ก ์๋ฒ/ํด๋ผ์ด์ธํธ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค.disableHydrate ์ต์
Hydration์ ๋นํ์ฑํํ๊ณ CSR๋ก ์ ํ
- ์ค์๊ฐ ๋ฐ์ดํฐ๊ฐ ์ค์ํ ๊ฒฝ์ฐ (๋์๋ณด๋, ์ฑํ ๋ฑ)
- ์๋ฒ/ํด๋ผ์ด์ธํธ ๋ ๋๋ง ๊ฒฐ๊ณผ๊ฐ ์๋์ ์ผ๋ก ๋ค๋ฅธ ๊ฒฝ์ฐ
- Hydration mismatch ํด๊ฒฐ์ด ์ด๋ ค์ด ๊ฒฝ์ฐ
์ ์ฒด ๋ฌธ์ Hydration
Sonamu๋ document ์ ์ฒด๋ฅผ hydrateํฉ๋๋ค (div#root๊ฐ ์๋).- TanStack Router๊ฐ
<html>,<head>ํ๊ทธ๊น์ง ๊ด๋ฆฌ <HeadContent />,<Scripts />์ปดํฌ๋ํธ๊ฐ head/body ์์ - SEO ๋ฉํ ํ๊ทธ๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
Suspense์ Hydration
์๋ฒ์์ Suspense fallback์ ๋ ๋๋งํ๊ณ ํด๋ผ์ด์ธํธ์์ ์ค์ ์ปจํ ์ธ ๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค.- SSR์์๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ๋ก๋๋์ด ์์
- fallback์ด ๋ณด์ด์ง ์์
- Hydration mismatch ๋ฐฉ์ง
QueryClient ์ค์
์๋ฒ ์ค์
ํด๋ผ์ด์ธํธ ์ค์
staleTime์ ๋์ผํ๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.