[Next.js] document is not defined ์ค๋ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ฐ์ํ
- Next.js๋ ์๋ฒ ์ฌ์ด๋์์
HTML
์ ์์ฑํ๊ณ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ ํ, ํด๋ผ์ด์ธํธ์์ ๊ฐ ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฌ์์ ์คํ ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๋ค(์ด๋ฅผ Hydration์ด๋ผ๊ณ ๋ถ๋ฆ) - ํ์ง๋ง ์๋ฒ ์ฌ์ด๋์์
HTML
์ ์์ฑํ๋ ์์ ์document
๊ฐ์ฒด๊ฐ ์กด์ฌํ์ง ์์ผ๋ฏ๋ก ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ.document
๋ DOM(๊ฐ์ฒด์ฒ๋ผHTML
์ ์กฐ์ํ ์ ์๋ ๋ชจ๋ธ)์ ์ ๊ทผํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด์ด๋ฉฐ, ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์๋ง ์ ๊ทผํ ์ ์๋ค. - ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์์ React ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ํ
document
๊ฐ์ฒด์ ์ ๊ทผํ๋๋ก ํด์ผ ํ๋ค. react-no-ssr ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ useIsMounted ๊ฐ์ ์ปค์คํ ํ ์ ์ฌ์ฉํ๋ฉด ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
๐ก useIsMounted ๊ฐ์ ์ปค์คํ
ํ
์ ๋ณดํต useEffect
๋ฅผ ํ์ฉํ๋ค. useEffect
๋ DOM์ด ํ๋ฉด์ ๊ทธ๋ ค์ง(ํ์ธํธ) ํ ํธ์ถ๋๊ธฐ ๋๋ฌธ. ๋ฐ๋ฉด useLayoutEffect
๋ DOM์ด ํ๋ฉด์ ๊ทธ๋ ค์ง๊ธฐ ์ ์ ํธ์ถ๋๋ค.
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
๋ฐ์ํ
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[TS] ํ์ ์คํฌ๋ฆฝํธ ๋ ์ข ๋ฅ์ ํค(key) ํ์ ์ ๋ฐ์ ๋ ๊ฐ์ฒด ์ ๊ทผํ๊ธฐ
[TS] ํ์ ์คํฌ๋ฆฝํธ ๋ ์ข ๋ฅ์ ํค(key) ํ์ ์ ๋ฐ์ ๋ ๊ฐ์ฒด ์ ๊ทผํ๊ธฐ
2024.05.08 -
[React] ๋ฆฌ์กํธ ref ๊ฐ์ฒด ์ฌ๋ฌ๊ฐ ๋ง๋ค๊ธฐ
[React] ๋ฆฌ์กํธ ref ๊ฐ์ฒด ์ฌ๋ฌ๊ฐ ๋ง๋ค๊ธฐ
2024.05.08 -
[TS] @ts-ignore, @ts-expect-error ํ์ ์คํฌ๋ฆฝํธ ์ฃผ์ ์ฐจ์ด์
[TS] @ts-ignore, @ts-expect-error ํ์ ์คํฌ๋ฆฝํธ ์ฃผ์ ์ฐจ์ด์
2024.05.08 -
[JS] ๋ค๊ตญ์ด๋ฅผ ๊ณ ๋ คํ์ฌ ๋ฌธ์์ด์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ๋ง๋ค๊ธฐ
[JS] ๋ค๊ตญ์ด๋ฅผ ๊ณ ๋ คํ์ฌ ๋ฌธ์์ด์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ๋ง๋ค๊ธฐ
2024.05.08