Next.js 12 - Dynamic Imports & Lazy-load Imports & Suspense

2025. 8. 6. 13:16·♠️ Next.js 12

Next.js 12

 

✅ Dynamic Imports란?


처음부터 컴포넌트를 로딩하는 것이 아니라 유저가 해당 컴포넌트를 보고 있을 때만 로딩해오는 import 방법

/* const Bs = dynamic(
  () =>
    new Promise((resolve) =>
      setTimeout(() => resolve(import("@components/bs")), 10000),
    ),
  { ssr: false, loading: () => <span>Loading a big component 4u.</span> },
); */
const Bs = dynamic(
  //@ts-ignore
  () =>
    new Promise((resolve) =>
      setTimeout(() => resolve(import("@components/bs")), 10000),
    ),
  { ssr: false, suspense: true },
);

 

 

✅ Lazy-load Imports란?


Dynamic 컴포넌트가 다운로드 되는데 너무 오래 걸릴 경우 dynamic 함수의 option arg에 loading이라는 prop을 이용하여 컴포넌트가 로딩이 되는 동안 대신 보여줄 컴포넌트를 지정할 수 있다.

const Bs = dynamic(
  () =>
    new Promise((resolve) =>
      setTimeout(() => resolve(import("@components/bs")), 10000),
    ),
  { ssr: false, loading: () => <span>Loading a big component 4u.</span> },
);

 

 

✅ Suspense


React 18부터는 자체적으로 지원하는 기능인 Suspense가 있다.

option에 {suspense: true}를 적어주면 똑같이 loader 컴포넌트를 보여줄 수 있다.

const Bs = dynamic(
  //@ts-ignore
  () =>
    new Promise((resolve) =>
      setTimeout(() => resolve(import("@components/bs")), 10000),
    ),
  { ssr: false, suspense: true },
);

 

그리고 컴포넌트 사이에 <Suspense>를 사용해주면 된다.

<Suspense fallback="Loading...">
  <Bs />
</Suspense>

 

'♠️ Next.js 12' 카테고리의 다른 글

Next.js 12 - Script Component & strategy & onLoad  (0) 2025.08.06
Next.js 12 - _document.tsx  (0) 2025.08.06
Next.js 12 - req.url과 req.nextUrl의 차이  (0) 2025.08.06
Next.js 12 - Middleware  (4) 2025.08.06
Next.js 12 - API Routes  (0) 2025.05.26
'♠️ Next.js 12' 카테고리의 다른 글
  • Next.js 12 - Script Component & strategy & onLoad
  • Next.js 12 - _document.tsx
  • Next.js 12 - req.url과 req.nextUrl의 차이
  • Next.js 12 - Middleware
j2yonghwa
j2yonghwa
Trying to be a fullstack developer 🚀
  • j2yonghwa
    j2yonghwa
    j2yonghwa
  • 전체
    오늘
    어제
    • 분류 전체보기 (156)
      • ⏰ Daily WakaTime (1)
      • 🏖️ 노마드코더 (2)
      • 🍺 Dev Setup (3)
      • 🔭 Tech Info (1)
      • 🚫 Error (1)
      • 📂 라이브러리 (23)
      • ♣️ Next.js 14 (10)
      • ♠️ Next.js 12 (20)
      • 🛸 React Native (12)
      • 🦋 TypeScript (1)
      • 🐍 Python (2)
      • 🌊 TailwindCSS (4)
      • 🧩 SQL (25)
      • 💎 Prisma (5)
      • 🌱 MongoDB (4)
      • 🎯 Redis (1)
      • 🧬 GraphQL (2)
      • 🔥 Firebase (7)
      • 💸 Third-Party Services (2)
      • 🕸️ Web (1)
      • 🏆 코딩테스트 (23)
      • 📙 모딥다 (5)
      • 📗 코테 합격자 되기 -JS- (0)
      • 📘 클린코드 (0)
      • 🍯 꿀팁 🐝 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃헙
  • 공지사항

  • 인기 글

  • 태그

    next.js 14
    0레벨
    Next.js
    tailwindcss
    Prisma
    dev setup
    모딥다
    MySQL
    코딩테스트 입문
    Python
    react router
    next.js 12
    SQL
    라이브러리
    PostgreSQL
    Firebase
    API
    React Native
    자바스크립트
    mongoDB
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
j2yonghwa
Next.js 12 - Dynamic Imports & Lazy-load Imports & Suspense
상단으로

티스토리툴바