React.lazy는 React에서 코드 스플리팅(Code Splitting)을 구현하기 위한 함수. 동적으로 컴포넌트를 로드할 때 사용되며, 애플리케이션 초기 로딩 시간을 줄이고 필요할 때만 코드를 가져온다.
코드 스플리팅은 애플리케이션 코드를 여러 개의 청크(chunk)로 분리하여 필요한 시점에 로드하는 기법.
React.lazy는 이러한 코드 스플리팅을 쉽게 구현할 수 있도록 돕는다.
React.lazy를 사용하면 동적으로 컴포넌트를 로드하고, Suspense를 사용해 로딩 상태를 표시할 수 있다.
1. Lazy 컴포넌트 정의
React.lazy는 컴포넌트를 반환하는 함수를 인자로 받는다.
🖥️ javascript
const LazyComponent = React.lazy(() => import('./MyComponent'));
여기서 import('./MyComponent')는 JavaScript의 동적 import 문법을 사용해 컴포넌트를 비동기로 로드한다.
2. Suspense와 함께 사용
Suspense의 fallback 속성을 통해 로딩 중 표시할 컴포넌트를 지정.
🖥️ jsx
import React, { Suspense } from 'react';
const LazyComponent = React.lazy(() => import('./MyComponent'));
function App() {
return (
<Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</Suspense>
);
}
위 코드에서 MyComponent를 로드하는 동안, fallback에 정의된 <div>Loading...</div>이 화면에 표시된다.
Suspense로 감싸야 한다. 그렇지 않으면 컴포넌트를 로드하는 동안 에러가 발생한다.: Lazy Loading(지연 로딩)은 데이터나 리소스를 "필요할 때 로드"하는 기법이다.
이는 성능 최적화와 리소스 절약을 목적으로 한다.
React.lazy는 lazy loading의 한 구현 방법으로, 특정 상황에서 사용.
그러나 React.lazy 자체는 React에서 제공하는 코드 스플리팅과 동적 로딩을 위한 API일 뿐이며, 일반적인 lazy loading 개념의 모든 경우를 포함하지는 않는다.
예시
React.lazy는 컴포넌트 Lazy Loading을 구현하는 React의 도구다.
따라서 React.lazy는 lazy loading의 특정 사례라고 볼 수 있다.
React.lazy로 구현된 로직은 필요할 때 컴포넌트를 동적으로 가져오는 방식으로
azy loading의 핵심 아이디어를 따른다. 그러나 Lazy Loading이 React.lazy에만 국한된 것은 아니다.
1. 범용성과 대상
2. 구현 방식
➡️ lazy loading은 더 넓은 개념이며, React.lazy는 컴포넌트 로딩에 특화된 구현.