Эх сурвалжийг харах

컴포넌트 lazy loading

home 6 сар өмнө
parent
commit
44c4f90ea0
1 өөрчлөгдсөн 11 нэмэгдсэн , 9 устгасан
  1. 11 9
      src/App.tsx

+ 11 - 9
src/App.tsx

@@ -4,29 +4,27 @@ import React, { Suspense, lazy } from 'react';
 import { Routes, Route } from 'react-router-dom';
 import Header from '@/components/Header';
 import Layout from '@/components/Layout';
-import Main from '@/pages/main';
-import NotFound from '@/pages/NotFound';
 import menuItems from '@/data/menuItems';
 
-// 모든 페이지를 glob으로 가져오기 (파일 경로 기준)
+// 모든 페이지를 glob으로 가져오기
 const pages = import.meta.glob('@/pages/**/*.tsx');
 
-// 페이지 경로로부터 Lazy 컴포넌트 생성
+// lazy import 유틸
 const lazyImport = (path: string) => {
   const importer = pages[`/src/pages/${path}.tsx`];
   return importer
     ? lazy(importer as () => Promise<{ default: React.ComponentType }>)
-    : lazy(() => Promise.resolve({ default: NotFound }));
+    : lazy(() => Promise.resolve({ default: () => <div>페이지를 찾을 수 없습니다.</div> }));
 };
 
-// Suspense 래핑 함수
+// Suspense 래핑
 const withSuspense = (Component: React.LazyExoticComponent<React.ComponentType>) => (
   <Suspense fallback={<div>로딩 중...</div>}>
     <Component />
   </Suspense>
 );
 
-// 메뉴 기반으로 라우트 생성
+// 메뉴 기반 라우팅
 const renderRoutesFromMenu = () => {
   return menuItems.map((parent) => {
     const parentPath = parent.href.replace(/^\//, '');
@@ -51,14 +49,18 @@ const renderRoutesFromMenu = () => {
   });
 };
 
+// 메인 및 404 페이지도 lazy import로 처리
+const Main = lazyImport('main/index');
+const NotFound = lazyImport('NotFound');
+
 const App = () => {
   return (
     <>
       <Header />
       <Routes>
-        <Route path="/" element={<Main />} />
+        <Route path="/" element={withSuspense(Main)} />
         {renderRoutesFromMenu()}
-        <Route path="*" element={<NotFound />} />
+        <Route path="*" element={withSuspense(NotFound)} />
       </Routes>
     </>
   );