inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Next + React Query로 SNS 서비스 만들기

에러 상황 처리하기(유저 정보 없음)

next.js 서버fetch 에러 fallback ui 구현 방법

173

변재정

작성한 질문수 15

0

next 공식문서를 살펴보면 단순 서버 fetch (서버액션x) 관련 에러 핸들링 방법은 딱히 안나와 있는 것 같아 질문드립니다.

만약 SectionA, SectionB, SectionC 서버 컴포넌트 내에서 각각 서버 fetch가 일어난다 가정했을 때 SectionB에서만 요청이 실패했다면 SectionB 영역만 fallback ui를 띄우고 나머지 SectionA, SectionC는 정상적으로 데이터를 렌더링하도록 구현하는 방법이 없을까요?

error-boundary 라이브러리는 클라이언트 환경에서만 사용가능해 서버 컴포넌트에선 사용할 수 없고 next 내부적으로 설계되어있는 에러 바운더리(error.js 등)는 전역에러를 캐치하는 걸로 알고있습니다. 때문에 페이지 내 특정 영역만 fallback ui를 띄우는 용도는 아닌 것 같더라구요.

혹시 다른 방법이 있나 궁금합니다 감사합니다!!

 

react next.js react-query next-auth msw

답변 2

0

제로초(조현영)

가장 단순한 방법은 try catch 같은 거 통해서 catch일 때 fallback 리턴하시면 됩니다.

0

변재정

try catch말곤 다른 방법이 없나보군요ㅠㅠ 답변 감사합니다!!

0

인프런 AI 인턴

안녕하세요, 인프런 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