JS & REACT

React Lazy Loading

KANG_G1 2023. 2. 7. 15:55

이전 회사에서 진행한 채팅 프로젝트에서

유저가 이미지를 첨부한 메시지가 많아질수록

이미지 로딩이 오래 걸리는 현상이 있었다.

대부분의 유저가 텍스트 메시지를 사용하기도 했고

이미지를 많이 보내는 유저도 드물었지만

유저는 항상 예측할 수 없는 행동을 하기에

대량의 이미지를 로딩해오는 부분에 대해 고려가 필요했다.

그 때 사용했던 것이 react-lazy-loading이었다.


웹 페이지의 성능 개선 중 하나이다.

효율적으로 import를 하는 것으로도 성능 개선이 가능하다.

모든 import를 한 번에 가져오는 것 보다 필요할 때만 가져와서

import를 해줌으로서 resource 낭비를 줄이기 때문이다.

그 방법으로 react-lazy-loading이라는 것이 있다.

쉬운 말로 해당 컴포넌트로 화면을 렌더링 할 때만 import를 해온다는 의미이다.

 

 

적용 방법 

개인 프로젝트를 진행할 때 사용했던 적용문을 예시로 들어보겠다.

Lazy Loading 적용

Before:

 

After:

 

이러한 import 형식을 ES6 Dynamic import 방식이라고 한다.

❗ 주의

import 순서에 따라 오류가 발생할 수 있다.

이런 경우에는 Dynamic import를 import의 최하단으로 내려주면 해결이 된다.

 

해당 컴포넌트가 전부 렌더링되지 않은 경우

인터넷 환경이 느리거나 컴퓨터 상태가 좋지 않은 경우에는 Detail 컴포넌트를

띄우는 데 시간이 걸려 하얀 화면만 보고 있는 경우도 존재할 것이다.

그런 경우에 대비해 로딩 화면을 미리 하나 만들어 놓을 수 있다.

 

1. 선언 후 Suspense 태그로 해당하는 컴포넌트를 감싸준다.

2. Suspense 태그에 속성으로 fallback을 사용해 로딩 전까지 나올 HTML을 작성해준다.