๐ค ์์งlog ๐ค
[NextJS] NextJS ์์ window ๊ฐ์ฒด๊ฐ ์๋ค๊ณ ํ ๋ ๋ณธ๋ฌธ
Next.js์์ ์ ๊ณตํ๋ SSR, ํ์ง๋ง ์ฐ๋ฆฌ๋ SSR์์ ์ฌ์ฉํ์ง ๋ชปํ๋ ๊ฐ์ฒด์ธ window ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋๊ฐ ๋ง์ต๋๋ค.
๊ทธ๋ด๋ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ !
1. typeof ๋ฅผ ์ฌ์ฉ.
if(window){...}
// window is not definde ์๋ฌ๋ฐ์
if(typeof window !== undefined) {...}
// ์ ์๋์ง์์ window์ ํ์
์ด๊ธฐ๋๋ฌธ์ undefied๊ฐ ๋ฐ์ -> ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
๊ฐ๋จํ๊ฒ ์ด๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก window๊ฐ์ฒด๊ฐ ์๋์ง ์ฒดํฌํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
2. useEffect๋ฅผ ์ฌ์ฉ.
useEffect(()=>{
// ์์์ window ๊ฐ์ฒด๋ฅผ ์ฌ์ฉ
},[])
useEffect๋ DOMํ์ฑ ํ์ ์คํ์ด ๋๋ hook์ ๋๋ค.
๊ณ ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ์๋ ์๋ฒ์์ window๋ฅผ ์ฒดํฌ๋ฅผ ํ์ง ์๋ ๋ค๋ ๊ฒ์ด์ฃ .
react๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ฐ์ฅ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋๊น ์ถ์ต๋๋ค.
3. dynamic์ ์ฌ์ฉ
import dynamic from 'next/dynamic'
const ComponentsWithNoSSR = dynamic<{props:type;}>(
// typescript์์ props๋ฅผ ์ ๋ฌํ ๋ interface๋ฅผ ์ ์ํด์ค๋๋ค.
() => import('./components/Component'),
// Component๋ก ์ฌ์ฉํ ํญ๋ชฉ์ importํฉ๋๋ค.
{ ssr: false }
// ssr์ต์
์ false๋ก ์ค์ ํด์ค๋๋ค.
);
const App = () => {
return(
<div>
<Components/>
// ํด๋น ์ปดํฌ๋ํธ๋ SSR๋ก ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค.
<ComponentsWithNoSSR/>
// ํด๋น ์ปดํฌ๋ํธ๋ ssr:false์ด๊ธฐ ๋๋ฌธ์ ์๋ฒ์ฌ์ด๋ ๋ ๋๋ฅผ ํ์ง์์ต๋๋ค.
</div>
)
};
next.js์์ ์ ๊ณตํ๋ dynamic์ด๋ผ๋ ํจ์๋ก ssr์ต์ ์ ๊บผ์ค ์ ์์ผ๋ฉฐ,
์ด๋ก ์ธํด window๋ฅผ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ์์ ์๋ฌ๊ฐ ๋๋ ๊ฒ์ ๋ง์ ์ ์์ต๋๋ค.
728x90
'๐ท Next JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NEXTJS ] getStaticProps( ) ์ getStaticPaths( ) (0) | 2023.02.24 |
---|---|
[NEXTJS] ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง์ ๋ฐ์ํ๋ html ๋งค์นญ ๋ฌธ์ (0) | 2023.02.21 |
[NextJS] NextJS์์ ์ปดํฌ๋ํธํ์์ผ๋ก SVG์ฌ์ฉํ๊ธฐ (0) | 2022.12.05 |
[NextJS] NextJS์์ Styled-components ์ฌ์ฉํ๊ธฐ (0) | 2022.12.05 |
[NextJS] NextJS_CSS (0) | 2022.10.06 |