NEXT.JS : Hydration, 'use client'

<angeLog/>ยท2024๋…„ 3์›” 13์ผ
0

NEXT.JS

๋ชฉ๋ก ๋ณด๊ธฐ
5/7
post-thumbnail

๐Ÿ’ก๋…ธ๋งˆ๋“œ์ฝ”๋” ๋‹ˆ๊ผฌ์Œค์˜ ๊ฐ•์˜๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๋ฆฌ์ฆˆ์ž…๋‹ˆ๋‹ค.

Hydration?

Hydration
์ดˆ๊ธฐ Html ํŒŒ์ผ์„ ๋จผ์ € ์ „๋‹ฌํ•˜๊ณ  ์ดํ›„ HTML ์š”์†Œ๋“ค์„ React ์ปดํฌ๋„ŒํŠธ๋กœ ๋ณ€ํ™˜ ๋ฐ ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋ถ€์ฐฉํ•˜์—ฌ React DOM์—์„œ ๊ด€๋ฆฌํ•˜๊ฒŒ ํ•˜๋Š” ๊ณผ์ •.

๊ฐœ๋ฐœ์ž๋„๊ตฌ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„๊ณ  link๋ฅผ ํด๋ฆญํ•˜๋ฉด ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ link๋Š” ๋ธŒ๋ผ์šฐ์ ธ์—์„œ aํƒœ๊ทธ๋กœ ์ฝํžˆ๋ฏ€๋กœ aํƒœ๊ทธ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ ๋˜๋Š”๊ฒƒ์€ ๋‹น์—ฐํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ๋‹ค์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์„ฑํ™” ํ•˜๊ณ  ์ปดํฌ๋„ŒํŠธ link๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ƒˆ๋กœ๊ณ ์นจ์—†์ด ํŽ˜์ด์ง€๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, React์˜ Hydrated๋œ ์ƒํƒœ๋ผ๊ณ  ํ•˜๋ฉฐ ์ดˆ๊ธฐ์— aํƒœ๊ทธ ๋ญ‰์น˜์˜€๋˜ ๊ฒƒ๋“ค์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ™œ์„ฑํ™”๊ฐ€ ๋˜๋ฉด์„œ React component๋กœ ๋ณ€ํ™˜ ๋œ ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๋ฆฌ์•กํŠธ Hydration์€ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ reloadํ•˜์ง€ ์•Š๊ณ  ๋น ๋ฅด๊ฒŒ navegatieํ•˜๊ฒŒ ๋˜๋ฉฐ ์ด๊ฒƒ์„ "interactive:์ƒํ˜ธ์ž‘์šฉํ•˜๋‹ค"๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

์š”์•ฝ

Hydration์€ ๋‹จ์ˆœ HTML์„ React application์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๊ณ  interactiveํ•˜๊ฒŒ ๋ณ€ํ™”์‹œํ‚ค๋Š” ๊ณผ์ •์„ ๋งํ•จ.

'use client'

์œ„์—์„œ ์„ค๋ช…ํ•œ๋Œ€๋กœ HTMLํŒŒ์ผ์ด React Hydrated๋˜๋ ค๋ฉด component ์ตœ์ƒ๋‹จ์— 'use client'๊ฐ€ ์ž„ํฌํŠธ ๋˜์–ด์žˆ์–ด์•ผํ•œ๋‹ค. ์ฆ‰ ํŒŒ์ผ ์ตœ์ƒ๋‹จ์˜ 'use client'๋ฅผ ๊ฐ–๊ณ ์žˆ๋Š” component๋งŒ React Hydrated๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋ง์ด๋‹ค. == interective component

'use client'๋ฅผ ์–ธ์ œ์“ธ๊นŒ?

์ด๋ถ€๋ถ„์€ ๊ณ ๋ฏผํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์„ ๋•Œ hydrete๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด error๋กœ ํžŒํŠธ๋ฅผ ์ค„ ๊ฒƒ์ด๋‹ค.
์—…๋กœ๋“œ์ค‘..

'use client'์˜ ํ•จ์ •

use client๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜ ๊ฒฝ์šฐ, ์ปดํฌ๋„ŒํŠธ๋ฅผ hydrateํ•˜๊ธฐ ์œ„ํ•ด์„œ JavaScript๋ฅผ ๋‹ค์šด๋ฐ›๊ฒŒ ๋œ๋‹ค. ๋งŽ์€ ์ปดํฌ๋„ŒํŠธ์—์„œ use clientํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ๊ทธ๋งŒํผ์˜ ์ฝ์–ด๋“ค์ผ ์Šคํฌ๋ฆฝํŠธ์˜ ์–‘์ด ๋งŽ์•„์ง€๋ฏ€๋กœ render์†๋„๊ฐ€ ๋А๋ ค์ง€๊ฒŒ ๋œ๋‹ค.

์š”์•ฝ

  • ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋Š” SSR๋กœ render๋˜์–ด HTML๋กœ ๋ณ€ํ™˜
  • use client๋ฅผ ๊ฐ€์ง„ client ์ปดํฌ๋„ŒํŠธ๋งŒ์ด hydrate ๋ฐ interective ๋จ
  • use client์™€ ์ผ๋ฐ˜ server component๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ 

์ถ”๊ฐ€
use client๋ฅผ ๊ฐ–์ง€ ์•Š์€ ์ปดํฌ๋„ŒํŠธ๋Š” sever์—๋งŒ ์กด์žฌํ•˜๋ฏ€๋กœ ๋ณด์•ˆ๋ฌธ์ œ๊ฐ€ ์—†์Œ (DBํ†ต์‹  ๊ฐ€๋Šฅ)

profile
์ผ๋‹จ ํ•ด๋ณผ๊ฒŒ์š”!โœ๐Ÿป

0๊ฐœ์˜ ๋Œ“๊ธ€