dynamic import
)할 수 있다. React.lazy
로 감싼 컴포넌트는 단독으로 쓰일 수는 없고, React.suspense
컴포넌트의 하위에서 렌더링을 해야 한다. import Component from './Component'; const Component = React.lazy(() => import('./Component'));
React.lazy
로dynamic import
를 감싼다.
<Suspense>
컴포넌트로 감싸준다. (부모 요소가 되는 것)Suspense
의 fallback
속성은 로딩 화면으로 보여줄 리액트 요소를 값으로 둔다.import { Suspense } from 'react'; // Suspense 불러오기 const OtherComponent = React.lazy(() => import('./OtherComponent')); // React.lazy를 사용해 동적으로 import 해오는 컴포넌트 const AnotherComponent = React.lazy(() => import('./AnotherComponent')); function MyComponent() { return ( <div> <Suspense fallback={<div>Loading...</div>}> // fallback 속성의 값은 로딩 시 보여줄 요소 <OtherComponent /> <AnotherComponent /> </Suspense> </div> ); }
OtherComponent
,AnotherComponent
를<Suspense>
컴포넌트로 감싸준다.
import { Suspense, lazy } from 'react'; import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; const Home = lazy(() => import('./routes/Home')); const About = lazy(() => import('./routes/About')); const App = () => ( <Router> <Suspense fallback={<div>Loading...</div>}> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> </Routes> </Suspense> </Router> );
1) 라우터가 분기되는 각 컴포넌트를 React.lazy를 사용하여 import한다.
2) 이 Route 컴포넌트들을 Suspense로 감싸고
3) 로딩 화면으로 사용할 컴포넌트를 Suspense의 fallback 속성으로 설정해준다.