React의 Suspense, ErrorBoundary
2023. 4. 20. 15:55ㆍ개발 관련
Suspense
<Suspense>가 감싼 내부 컴포넌트 등이 로딩되는 동안 fallback(대체물)을 표시한다.
아래와 같은 상황에서 사용할 수 있다.
- 콘텐츠의 로딩시간이 필요할 때
- 콘텐츠를 한 번에 공개하고 싶을 때
- 전환이 일어나고 있음을 나타내고 싶을 때
더 많은 상황을 알고 싶다면... > 공식문서 참고
<Suspense fallback={<Loading />}> //로딩 시 대체내용
<ChildrenComponent /> //로딩내용
</Suspense>
작동원리는 아래와 같다.
ChildrenComponent가 Promise를 던지면, Suspense가 이를 catch하고,
Promise가 pending(보류중) 상태이면 LoadingFallback을 return하고, settled(fulfilled, rejected)(완료된(성공, 실패))이면 ChildrenComponent을 return 한다.
* 하지만 무분별한 Suspense사용은 안된다. Suspense 내에서 2개 이상의 요청을 한다면 병목현상이 발생하여 요청 간의 waterfall현상이 발생한다.
ErrorBoundary
ChildrenComponent의 Promise가 rejected(실패한)상태라면 로딩 후에 실패로 처리된다.
따라서 프로그램이 정상적으로 표시되지 않는다.
<ErrorBoundary>를 사용하여 에러를 정상적으로 처리할 수 있다.
Suspense와 마찬가지로 에러처리가 필요한 ChildrenComponent를 감싸고 처리할 내용을 fallbackRender속성에 작성한다.
<ErrorBoundary fallbackRender={<Loading />}> //에러 시 대체내용
<ChildrenComponent /> //로딩내용
</ErrorBoundary>
참고
https://happysisyphe.tistory.com/54
https://react.dev/reference/react/Suspense
'개발 관련' 카테고리의 다른 글
TypeScript의 Object 타입 선언 (0) | 2023.04.25 |
---|---|
TypeScript의 Type선언 (0) | 2023.04.25 |
React의 Router (0) | 2023.04.20 |
FLUX 패턴 (0) | 2023.04.19 |
React와 데이터 바인딩 (0) | 2023.04.19 |