<aside> 💡
목차
</aside>
평생 게을리 살고 싶네요.
React.lazy
*와 **Suspense
*를 사용하여 컴포넌트 단위로 지연 로드를 구현합니다.Before (Lazy Loading 미적용)
import { HomePage, NotFound, WorkspacePage } from '@/pages';
import { RouterProvider, createBrowserRouter } from 'react-router-dom';
import { ToasterWithMax } from '@/shared/ui';
import { ErrorPage } from '@/pages/ErrorPage/ErrorPage';
const router = createBrowserRouter([
{
path: '/',
element: <HomePage />,
errorElement: <ErrorPage />,
},
{
path: '/workspace/:workspaceId',
element: <WorkspacePage />,
errorElement: <ErrorPage />,
},
{
path: '*',
element: <NotFound />,
},
]);
export const App = () => (
<>
<ToasterWithMax />
<RouterProvider router={router} />
</>
);
export default App;
After (Lazy Loading 적용)
import { RouterProvider, createBrowserRouter } from 'react-router-dom';
import { ToasterWithMax } from '@/shared/ui';
import { ErrorPage } from '@/pages/ErrorPage/ErrorPage';
import { lazy, Suspense } from 'react';
import { Loading } from '@/shared/ui';
// lazy 로딩
const HomePage = lazy(() =>
import('@/pages/HomePage/HomePage').then((module) => ({ default: module.HomePage }))
);
const WorkspacePage = lazy(() =>
import('@/pages/Workspacepage/WorkspacePage').then((module) => ({
default: module.WorkspacePage,
}))
);
const NotFound = lazy(() =>
import('@/pages/NotFound/NotFound').then((module) => ({ default: module.NotFound }))
);
const router = createBrowserRouter([
{
path: '/',
element: (
<Suspense fallback={<Loading />}>
<HomePage />
</Suspense>
),
errorElement: <ErrorPage />,
},
{
path: '/workspace/:workspaceId',
element: (
<Suspense fallback={<Loading />}>
<WorkspacePage />
</Suspense>
),
errorElement: <ErrorPage />,
},
{
path: '*',
element: (
<Suspense fallback={<Loading />}>
<NotFound />
</Suspense>
),
},
]);
export const App = () => (
<>
<ToasterWithMax />
<RouterProvider router={router} />
</>
);
export default App;