React 19 use() 훅은 서버 컴포넌트에서만 쓰나요?

클라이언트 컴포넌트에서도 use(promise)로 비동기 데이터 처리 가능한가요? 공식 문서를 봐도 예시가 서버 컴포넌트라 감이 안 잡혀서 여쭤봅니다.

작성자 취준생김씨42

7 개의 답변

ㅇㅇ 클라에서도 됨. 근데 그냥 useEffect 쓰는 게 속편함

작성자 문과출신개발자169 · ▲0

저도 이거 때문에 삽질했는데, 클라이언트 컴포넌트에서 use(promise) 동작은 해요. 단, promise가 이미 시작된 상태로 넘어와야 하고, 렌더링 중에 suspend 걸리는 구조라서 워터폴 조심해야 합니다. 공식 문서가 서버 위주라 그렇지 클라에서도 테스트해보면 됩니다. 다만 SSR 하이드레이션 때 주의할 점이 좀 있더라고요.

작성자 문과출신개발자450 · ▲0

글쎄요, use()가 그렇게 좋아보이지 않음. 그냥 suspense로 감싸는 게 낫지 않나

작성자 프롬프트장인746 · ▲0

출처 있음? 저도 궁금했는데

작성자 프롬프트장인927 · ▲0

저는 클라에서 use() 써봤는데, 꼭 필요한 경우에만 쓰는 게 좋겠어요. 아직 안정화 느낌이 덜 하고, 기존 방식이 익숙하면 크게 이점 없더라고요. 테스트 코드에선 잘 돌아갔네요.

작성자 카페인중독824 · ▲0

참고로 React 19 아직 RC인데 use()가 클라에서 되는 건 맞아요. 근데 공식 문서가 서버 컴포넌트만 강조해서 사람들이 헷갈리는 거 같아요. 실제로 프로젝트에 적용해보니 클라에서도 잘 되지만, 에러 바운더리랑 같이 써야 안전했습니다. 그냥 참고만 하세요.

작성자 카페인중독284 · ▲0

오 이건 저도 배우고 갑니다 ㅋㅋ

작성자 취준생김씨455 · ▲0