React

React.lazy & Suspense

라임오렌지원 2022. 9. 19. 11:00

코드 스플리팅을 위해 리액트에 내장된 기능으로 유틸 함수인 React.lazy와 컴포넌트인 Suspense가 있다.

이 기능은 리액트 16.6 버전부터 도입. 이전 버전에서는 import함수를 통해 불러온 다음, 컴포넌트 자체를 state 에 넣는 방식으로 구현해야 한다.

 

React.lazy와 Suspense를 사용하면 코드 스플리팅을 하기 위해 state를 따로 선언하지 않고도 간편하게 컴포넌트 코드 스플리팅을 할 수 있다. 

 

* 코드 스플리팅(Code Splitting)?
코드 분할이다. 싱글 페이지 애플리케이션의 성능을 향상시키는 방법.
코드 분할을 활용하게 되면 초기 로딩시에 모든 웹 자원을 다운받지 않고 필요한 시점에 다운 받아 성능상의 이점이 생긴다.

 

React.lazy

컴포넌트를 렌더링하는 시점에서 비동기적으로 로딩할 수 있게 해 주는 유틸 함수이다.

사용방법

const SplitMe = React.lazy(() => import('./SplitMe'));

 

Suspense

리액트 내장 컴포넌트로서 코드 스플리팅된 컴포넌트를 로딩하도록 발동시킬 수 있고,

로딩이 끝나지 않았을 때 보여 줄 UI를 설정할 수 있다.

사용방법

import { Suspense } from 'react';

(...)
<Suspense fallback={<div>loading...</div>}>
	<SplitMe />
</Suspense>

Suspense에서 fallback props를 통해 로딩 중에 보여 줄 JSX를 지정할 수 있다.

 


참고사이트

https://joshua1988.github.io/vue-camp/advanced/code-splitting.html

 

Code Splitting | Cracking Vue.js

코드 분할 코드 분할(Code Splitting)은 싱글 페이지 애플리케이션의 성능을 향상시키는 방법입니다. 싱글 페이지 애플리케이션(Single Page Application)은 초기 실행시에 필요한 웹 자원을 모두 다운 받

joshua1988.github.io

 

참고 서적

'리액트를 다루는 기술 (김민준 지음)'

728x90

'React' 카테고리의 다른 글

dangerouslySetInnerHTML  (0) 2022.10.06
React 화살표 함수  (2) 2022.09.21
[React] useMemo useCallback  (0) 2022.09.15
React 외부 js불러와서 사용하기  (0) 2022.09.08
React 구조 ? 흐름 ? 리액트가 처음이라면 ?  (0) 2022.08.31