Suspense와 함께하는 효율적인 비동기 로직 구축

React 18에서 정식으로 도입된 Suspense는 비동기 UI 렌더링을 효율적으로 관리할 수 있게 도와줍니다. 이 기능은 개발자들에게 더 선언적이고 직관적인 방식으로 비동기 컨텐츠를 다룰 수 있는 도구를 제공하는데요.


Suspense의 기본 구조

Suspense는 children과 fallback 의 두 가지 주요 props를 받는 React 컴포넌트입니다:

  • children: 최종적으로 렌더링될 실제 UI

  • fallback: 자식 요소가 로드되기 전까지 표시될 대체 UI (예: 로딩 스피너, 스켈레톤 UI)

기본 사용 예시:

<Suspense fallback={<Loading />}>
  <SomeComponent />
</Suspense>

선언적 비동기 처리

이전에는 비동기 데이터에 대한 로딩 처리를 할때, 명령형 코드(예: if(loading) return <Loading />)를 사용해야 했습니다만, Suspense를 통해 이러한 로직을 더욱 선언적으로 작성할 수 있게 되었습니다.


Suspense의 내부 동작

Suspense는 Promise를 throw하는 독특한 메커니즘을 사용합니다. 렌더링 중 데이터 로딩이 필요한 경우, 컴포넌트는 Promise를 throw하여 제어권을 상위로 넘깁니다. 이 Promise가 resolve되면 React 스케줄러에 의해 재처리됩니다.


통합된 렌더링 단위

Suspense로 감싼 전체 트리는 하나의 렌더링 단위로 취급됩니다. 이를 통해 여러 비동기 컴포넌트를 동시에 로드하고 표시할 수 있습니다:

<Suspense fallback={<Loading />}>
  <Biography />
  <Panel>
    <Albums />
  </Panel>
</Suspense>

Suspense의 이점

  1. 표준화된 비동기 데이터 처리: 다양한 비동기 라이브러리에 대한 의존성 감소

  2. SSR 지원: SPA를 넘어 서버 사이드 렌더링까지 확장 가능

  3. 향상된 사용자 경험(UX): 세밀한 로딩 상태 제어와 Error Boundary를 통한 효과적인 에러 처리

  4. 개선된 개발자 경험(DX): 직관적이고 간결한 코드 작성 가능


Suspense는 React 애플리케이션의 비동기 로직을 간소화하고, 성능을 최적화하며, 사용자 경험을 개선해주는 도구로, 복잡한 비동기 시나리오를 효과적으로 다룰 수 있는 솔루션을 제공합니다. React18부터 정식 도입된 만큼 이제 실무에서도 Suspense를 활용해보시는것을 추천드립니다.


https://ko.react.dev/reference/react/Suspense

- React

React

- React

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 7월 10일 오전 12:36

 • 

저장 13조회 1,870

댓글 0

    함께 읽은 게시물

    주니어 개발자들이 읽으면 좋은 테크 아티클 모음📚

    F-Lab 에서 주니어 개발자들이(사실 개발자라면 누구나) 보시면 좋을 아티클 모음을 공유해 주었네요! 검색엔진부터 비동기 처리, NoSQL 등 다양한 분야의 아티클들이 공유되어 있으니 관심있으신 분들은 보시면 좋겠습니다. F-Lab 에서 공유해주신 아티클 주제를 나열해보면 다음과 같습니다. 📌 구글이 직접 말하는 검색엔진의 원리 (tali.kr) 📌 검색 엔진은 어떻게 작동하는가 (xo.dev) 📌 네이버의 검색엔진의 특징과 알고리즘 (tistory.com) 📌 [네이버 블로그]네이버 검색의 원리 : 네이버 블... 더 보기

    주니어 개발자들이 읽으면 좋은 테크 아티클 모음

    F-Lab : 상위 1% 개발자들의 멘토링

    주니어 개발자들이 읽으면 좋은 테크 아티클 모음

     • 

    저장 160 • 조회 4,497


    [알고리즘, 시스템 디자인 면접 완벽 준비 팁 + 무료 템플릿]

    알고리즘과 시스템 디자인 면접 준비는 어디서부터 어떻게 해야 할까요? 준비 체크리스트 템플릿과 함께 예전에 포스팅한 알고리즘과 시스템 면접 관련 포스팅을 한꺼 번에 모아서 단계별로 알려드립니다. 📌 [알고리즘 문제 풀기 면접 없는 회사 리스트] https://careerly.co.kr/comments/51256 많은 개발자들이 알고리즘 문제 풀기로 채용하는 걸 반대합니다. 현역에서 알고리즘 문제를 푸는 경우가 많은 것도 아니고, 알고리즘 문제를 완벽하게 풀지 못해도 임팩트 있는 업무를 잘해낼 ... 더 보기

     • 

    댓글 5 • 저장 646 • 조회 19,579


    작년에 읽은 34권의 책 중 가장 좋았던 책

    2

    ... 더 보기

    2024년에 밑줄 친 문장들

    1nteger 🏄🏻‍♂️

    2024년에 밑줄 친 문장들

     • 

    저장 12 • 조회 1,598


    제가 리드하고 있는 조직(당근마켓 커뮤니티실)에서 백엔드 엔지니어를 채용 중이에요.


    커뮤니티실에는 동네 이웃들의 이야기와 정보를 공유하는 동네생활팀, 이웃 간의 취미와 관심사를 연결하는 모임팀, 그리고 아파트 단지 생활을 더 편리하고 즐겁게 만들어 줄 단지팀이 있어요. 지금 내 동네에서 일어나고 있는 일들을 더 쉽게 즐기고 공유할 방법들을 찾는 일이라면 무엇이든 도전하여 실행에 옮겨요. 만드는 사람이 불편할수록 쓰는 사람은 편하다는 믿음으로 도전적인 문제를 풀어나갈 분과 함께하고자 해요.

    ... 더 보기

    이직하고 싶을 때 보세요

    ... 더 보기

    - YouTube

    youtu.be

     - YouTube

    🤖 최초의 AI 브라우저, Dia 직접 써봤습니다! 🌐

    ... 더 보기