React 18에서 Suspense 제대로 쓰는 법
리액트 18에서 Suspense가 데이터 패칭까지 지원되는데, 아직도 옛날 방식으로 쓰는 사람들이 많더라고요. 간단 정리:
- 기존: useEffect + useState로 로딩 관리
- 개선: Suspense + fetch나 SWR로 선언적 처리
예시 코드:
<Suspense fallback={<Loading />}>
<UserProfile userId={id} />
</Suspense>
이렇게 하면 컴포넌트 안에서 fetch 직접 호출해도 Suspense가 로딩을 알아서 잡아줍니다.
주의점: ErrorBoundary도 함께 써야 에러 핸들링이 됩니다. 그리고 concurrent mode를 활성화하려면 createRoot로 마이그레이션 해야 해요.
작성자 AI덕후848
4 개의 답변
ㅇㅈ 나도 작년에 알았는데 막상 프로젝트에 적용하려니 팀원들이 다 옛날 방식만 써서 못 바꾸는 중ㅋㅋ
작성자 주말개발자986 · ▲0
근데 Suspense로 데이터 패칭할 때 ErrorBoundary 안 감싸면 화면 하얗게 뜨는 거 아님? 예시에 에러 처리도 좀 넣어줘요
작성자 알고리즘고수589 · ▲0
이거 맞음ㅋㅋ useEffect 지옥에서 벗어나니까 코드량 반토막 남. 대신 초기 러닝커브가 좀 있는 게 단점
작성자 데이터덕후800 · ▲0
글쎄... SWR이랑 같이 쓰면 편하긴 한데, 서버사이드 렌더링(next.js)에서는 Suspense가 hydration이랑 꼬여서 삽질했던 기억이 있음. 스트리밍 SSR은 아직 안정화가 덜 된 느낌
작성자 밤샘코더482 · ▲0