๋ฐ˜์‘ํ˜•

 

  • Next.js๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ HTML์„ ์ƒ์„ฑํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•œ ํ›„, ํด๋ผ์ด์–ธํŠธ์—์„  ๊ฐ ์š”์†Œ์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋‹ฌ์•„์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค(์ด๋ฅผ Hydration์ด๋ผ๊ณ  ๋ถ€๋ฆ„)
  • ํ•˜์ง€๋งŒ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ HTML์„ ์ƒ์„ฑํ•˜๋Š” ์‹œ์ ์—” document ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ. document๋Š” DOM(๊ฐ์ฒด์ฒ˜๋Ÿผ HTML์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ)์— ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์ด๋ฉฐ, ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์—์„œ React ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งˆ์šดํŠธ๋œ ํ›„ document ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค. react-no-ssr ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ useIsMounted ๊ฐ™์€ ์ปค์Šคํ…€ํ›…์„ ์‚ฌ์šฉํ•˜๋ฉด ์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ’ก useIsMounted ๊ฐ™์€ ์ปค์Šคํ…€ ํ›…์€ ๋ณดํ†ต useEffect๋ฅผ ํ™œ์šฉํ•œ๋‹ค. useEffect๋Š” DOM์ด ํ™”๋ฉด์— ๊ทธ๋ ค์ง„(ํŽ˜์ธํŠธ) ํ›„ ํ˜ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ. ๋ฐ˜๋ฉด useLayoutEffect๋Š” DOM์ด ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๊ธฐ ์ „์— ํ˜ธ์ถœ๋œ๋‹ค.

 


๊ธ€ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋…ธ์…˜ ํŽ˜์ด์ง€์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
๋ฐ˜์‘ํ˜•