inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

한 입 크기로 잘라먹는 Next.js

인터셉터 오류

해결된 질문

96

Full Stack 개발자

작성한 질문수 39

0

  1. book 페이지의 인터셉터 페이지를 만드는 과정이다.

  2. 기존 book 페이지에서 인자값을 받고 있기 때문에 인터셉터 페이지에서도 인자값을 받기 위해서 props로 받았지만 인터셉터 페이지가 정상적으로 작동하지 않는다.

import BookPage from "@/app/book/[id]/page"

export default function Page(props: any) { //기존에 book 페이지에서 받고 있던 프롭스를 그대로 가져와야 해서 any타입으로 받는 것
    return 
   ( <div>
        가로채기 성공
        <BookPage {...props}/>
    </div>)
}

 

  1. book 페이지의 인자 값은 다음과 같다.

export default async function Page({
  params,
}: {
  params: Promise<{ id: string }>;
}) {
  const resolvedParams = await params;
  const id = resolvedParams.id;

  return (
    <div className={style.container}>
      <BookDetail bookId={id} />
      <ReviewEditor bookId={id} />
      <ReviewList bookId={id} />
    </div>
  );
}
  1. 인터셉터 페이지에서 인자값을 props: any가 아니라 다르게 설정해야 하나요?

 

react typescript next.js

답변 2

0

이정환 Winterlood

안녕하세요 FullStack 개발자님

이전 질문과 동일하게 먼저 return 문을 확인해보시면 뭔가 잘못되었다는걸 아실 수 있을거에요..! ㅋㅋ

return으로 아무것도 반환되지 않고 있습니다. 소괄호를 윗줄로 올려주셔야 할 것 같아요

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. Full Stack 개발자님.

인터셉터 페이지의 오류와 관련하여 몇 가지 확인해볼 점들을 안내해드리겠습니다. 인터셉터 페이지에서 props를 받고 그대로 BookPage에 전달하는 부분에서 문제가 있을 수 있습니다. 특히 Next.js에서는 props의 타입을 명확히 하는 것이 중요합니다. 여러분이 제시한 코드에서는 props의 타입이 any로 지정되어 있는데, 타입을 명확히 지정하면 문제를 더 쉽게 파악하고 해결할 수 있습니다.

문제 해결 방안

  1. 타입 명시:

props의 타입을 정확히 지정하는 것이 좋습니다. 기존 book 페이지에서 필요한 paramsPromise<{ id: string }> 타입이라면, 이를 해체하여 필요한 데이터를 명시적으로 기술할 수 있습니다.

   export default function Page({ params }: { params: Promise<{ id: string }> }) {
     return (
       <div>
         가로채기 성공
         <BookPage params={params} />
       </div>
     );
   }
  1. Promise 처리:

인터셉터 페이지에서 params를 다룰 때, Promise로 전달되는지 확인하고, 이를 비동기 함수에서 처리하여 id 같은 데이터에 접근할 수 있도록 설정해야 합니다.

   export default async function Page({ params }: { params: Promise<{ id: string }> }) {
     const resolvedParams = await params;
     return (
       <div>
         가로채기 성공
         <BookPage params={resolvedParams} />
       </div>
     );
   }
  1. 기타 확인 사항:

    • 전체 컴포넌트 구조를 점검하여, 중복되거나 불필요한 코드가 없는지 확인하세요.
    • BookPage 컴포넌트가 올바르게 params를 수신할 준비가 되어 있는지 확인하세요.

관련 있는 기존 질문과 답변을 참고하여 추가로 정보를 얻기를 원하신다면 아래 링크를 참조하세요:

UI와 비즈니스 로직이 제대로 백엔드와 통신할 수 있도록 조정을 시도해 보세요. 현재 제출된 정보를 기반으로 제시된 해결 방법이 도움이 되길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

Full Stack 개발자

  1. 말씀하신 대로 처리해도 아래와 같이 오류가 발생합니다.

    image.png
  2. 그런데

    { params }: { params: Promise<{ id: string }> }

    이렇게 프롭스에 값을 지정해버리면 컴포넌트로 활용할 수 없지 않나요?

풀라우트캐시 동작 원리에서 데이터 캐시 관련 질문

0

23

2

next.js 프로젝트

0

29

1

Next.js + Tanstack Query BFF 구조 질문

0

30

2

Next.js 사전렌더링 이해하기 부분

0

34

2

모달 관련 질문

0

42

3

렌더링 관련 질문

0

80

2

중복으로 하나의 api를 요청할 때 캐싱 옵션 통일화

0

64

2

라우트 세그먼트 옵션 강좌 노트에 사소한 제보 남깁니다.

0

65

2

SSR시 context에 params말고 query를 사용하면 안되나요?

0

75

2

npx prisma db push 시 에러가 뜹니다.

0

94

3

vercel 배포를 실패하였습니다.

0

101

3

Image 컴포넌트 사용시 브라우저 콘솔에 경고는 왜 뜨는걸까요?

0

57

2

getServerSideProps 함수와 SSR의 관계

0

78

6

없는 페이지인데 풀라우트캐시로 저장이 되는 이유가 궁금합니다

0

61

2

실제 프로젝트에서 SSR 사용에 관해서 질문드립니다.

0

117

2

일반적인 nextjs project architecture에 대하여..

0

90

2

2.14 Search에서 작성한건 static이긴하지만 CSR이 아닌가요?

0

74

2

배포 시 오류 발생

0

90

2

백엔드 서버 오류납니다.

0

83

2

취약점 제거시 nestjs 버전 문제가 생길까요?

0

93

1

eslint.config.mjs 내 rules 어떻게 설정 하나요?

0

107

1

[book]/[id]/page.tsx 모달 띄울 때 성능 하락 현상은 ReviewList를 불러오면서 발생하는 문제 같습니다.

0

63

2

빨간줄 설정

0

77

2

익스텐션 질문

0

61

1