next.js 서버fetch 에러 fallback ui 구현 방법
173
작성한 질문수 15
next 공식문서를 살펴보면 단순 서버 fetch (서버액션x) 관련 에러 핸들링 방법은 딱히 안나와 있는 것 같아 질문드립니다.
만약 SectionA, SectionB, SectionC 서버 컴포넌트 내에서 각각 서버 fetch가 일어난다 가정했을 때 SectionB에서만 요청이 실패했다면 SectionB 영역만 fallback ui를 띄우고 나머지 SectionA, SectionC는 정상적으로 데이터를 렌더링하도록 구현하는 방법이 없을까요?
error-boundary 라이브러리는 클라이언트 환경에서만 사용가능해 서버 컴포넌트에선 사용할 수 없고 next 내부적으로 설계되어있는 에러 바운더리(error.js 등)는 전역에러를 캐치하는 걸로 알고있습니다. 때문에 페이지 내 특정 영역만 fallback ui를 띄우는 용도는 아닌 것 같더라구요.
혹시 다른 방법이 있나 궁금합니다 감사합니다!!
답변 2
0
가장 단순한 방법은 try catch 같은 거 통해서 catch일 때 fallback 리턴하시면 됩니다.
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로 감싸야 하기 때문에 직접 제어가 가능합니다.
관련하여 더 많은 정보를 원하시면, 다음의 문서 및 게시물을 참고해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
캡처링부분 질문있습니다.
0
71
2
깃에 소스코드를 찾을 수 없습니다.
0
112
2
useInfiniteQuery promise와 react use 사용시 페이지 무한 로딩
0
97
1
import 파일 경로를 찾지 못 해서 에러가 발생합니다.
0
108
2
css 라이브러리 추천 부탁드립니다
0
140
2
팔로우 추천 목록이 빈 배열로 들어옵니다.
0
129
1
게시물 업로드 시 userId가 undefined로 들어가는 오류
0
118
1
useSuspenseQuery 사용 시 SSR 401 이슈 관련
0
168
1
리액트 쿼리 useinfinitequery 무한스크롤 구현 시 페이지가 이동할 경우 데이터가 보존되게 할 수 있나요??
0
184
3
폴링이 필요없는 이유
0
93
2
next Request Memoization과 react cache
0
107
2
seo 최적화 기준은 데이터 fetching인가요 아님 데이터 렌더링인가요?
0
83
2
프레임워크 여론 파악법
0
124
2
필터옵션이 많은 페이지에서 서버 fetch를 하는게 맞는걸까요??
0
101
2
서버 fetch suspense 로 감싸고 새로고침 시 잠시 빈 화면이 노출된 후 fallback ui가 노출됩니다.
0
102
2
template.tsx 내 서버fetch 응답값과 클라이언트 컴포넌트 상태값 싱크가 맞지 않는 이슈
0
65
2
Auth.js 사용 시 authorize 함수가 호출되지 않습니다
0
131
2
next.js 에서 로그인에 관하여
0
138
1
Next의 route handler에 대한 질문이 있습니다.
0
101
2
게시판 리스트 만들때 use client를 어디서부터 집어넣어야할지 모르겠습니다
0
95
2
프라이빗 폴더를 해야 하는 이유가 모호한 것 같아요.
0
81
2
vanilla-extract 못찾는 문제
0
223
2
fetch 캐싱과 revalidate 관련
0
81
2
강의 듣는 방법
0
101
2





