작성
·
60
0
next 공식문서를 살펴보면 단순 서버 fetch (서버액션x) 관련 에러 핸들링 방법은 딱히 안나와 있는 것 같아 질문드립니다.
만약 SectionA, SectionB, SectionC 서버 컴포넌트 내에서 각각 서버 fetch가 일어난다 가정했을 때 SectionB에서만 요청이 실패했다면 SectionB 영역만 fallback ui를 띄우고 나머지 SectionA, SectionC는 정상적으로 데이터를 렌더링하도록 구현하는 방법이 없을까요?
error-boundary 라이브러리는 클라이언트 환경에서만 사용가능해 서버 컴포넌트에선 사용할 수 없고 next 내부적으로 설계되어있는 에러 바운더리(error.js 등)는 전역에러를 캐치하는 걸로 알고있습니다. 때문에 페이지 내 특정 영역만 fallback ui를 띄우는 용도는 아닌 것 같더라구요.
혹시 다른 방법이 있나 궁금합니다 감사합니다!!
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 변재정님.
Next.js에서 서버 컴포넌트 내에서 개별 fetch 요청이 실패 시 특정 부분에만 fallback UI를 적용하는 방식은 기본적으로 비동기 데이터 패칭에서 수동으로 에러 처리를 해야 합니다. Next.js에서 제공하는 error.js
는 주로 페이지 수준에서 에러를 처리할 수 있으며, 글로벌 에러 핸들링에 적합합니다.
하지만 개별 컴포넌트 수준에서 에러 처리를 하려면 직접적으로 fetch 요청을 try-catch로 감싸고, 에러 발생 시 적절한 fallback UI를 반환하여 처리할 수 있습니다. 이는 서버 컴포넌트에서 개별 영역에 대한 에러 처리를 수동으로 구현하는 방식입니다.
여기서는 예를 들어 설명드리겠습니다:
export default async function SectionB() {
try {
const res = await fetch('https://example.com/api/section-b');
if (!res.ok) {
throw new Error('Fetch 실패');
}
const data = await res.json();
return <SomeComponent data={data} />;
} catch (error) {
return <FallbackUI />;
}
}
이렇게 하면 SectionB
에서 fetch 요청이 실패하는 경우에만 FallbackUI
컴포넌트를 출력할 수 있습니다. 이 방법은 각 fetch 요청을 try-catch로 감싸야 하기 때문에 직접 제어가 가능합니다.
관련하여 더 많은 정보를 원하시면, 다음의 문서 및 게시물을 참고해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
try catch말곤 다른 방법이 없나보군요ㅠㅠ 답변 감사합니다!!