이 문제를 해결하기 위해 리소스를 필요한 때에 불러오도록 하는 방법인 lazy import 이다.
예시)
대량의 이미지를 사용하는 웹에서 사용자에게 보여지는 부분만 로드하고
보여지지 않는 부분은 나중에 필요 시 로드되게 하는 것
코드 스플리팅?
큰 번들을 작은 덩어리로 분할 하는 과정.
웹의 초기 로딩 시간을 줄이는 데 도움을 준다.
React.lazy
함수는 컴포넌트를 동적으로 import하여React.lazy
에 담긴 컴포넌트는 <React.Suspense>
로 감싸야 한다.// 컴포넌트를 반환하는 Promise
const HeavyComponent = React.lazy(() => import('./HeavyComponent'))'
function App() {
return (
<div>
// 로딩 전에는 <div>Loading...</div> 이 보여진다.
<React.Suspense fallback={<div>Loading...</div>}>
// 필요하기 전에는 로드가 되지 않는다. (비동기적 로드)
<HeavyComponent />
</React.Suspense>
</div>
);
}
예시)
<UserProfile/>
(Main Component) ---> <h1>Loading user profile...<h1>
(fallback)
<UserPosts/>
(Main Component) ---> <h1>Loading user posts...<h1>
(fallback)