문제 상황
- 웹 페이지를 클라이언트 컴포넌트로 구성하고, useSearchParams 훅을 사용해 쿼리스트링 값을 받아 서버 컴포넌트에 props로 내려주려 함.
- 서버 컴포넌트에서 이 props를 사용해 데이터를 fetch하려 했으나, 클라이언트 컴포넌트에 서버 컴포넌트를 임포트하면 서버 컴포넌트도 클라이언트 컴포넌트가 되버려서 서버 컴포넌트의 로직이 정상적으로 실행되지 않음.
- 페이지를 서버 컴포넌트로 설정하는 것이 맞다고 판단됨.
- 그럼 어떻게 서버 컴포넌트에서 쿼리스트링 값을 어떻게 가져오지?
해결 방법
- useSearchParams 훅 등을 사용하지 않고, 페이지에서 쿼리스트링 값을 직접 함수의 props로 받는 방식으로 문제를 해결할 수 있었다.
export default async function ReservePage({ searchParams }: { searchParams: { classId: string } }) {
const classId = searchParams.classId;
const classInfo = await fetchClassInfo({ classId });
return (
<div className="w-full h-full">
<h1 className="text-xl">예약하기</h1>
<ClassInfo classInfo={classInfo} classId={classId} />
// ... 중략
</div>
);
}
'Today I Learned' 카테고리의 다른 글
2024. 03. 21. TIL - 백엔드 api의 응답 활용하기 (0) | 2024.03.31 |
---|---|
스프레드 연산자로 효율적인 리듀서 만들기 (0) | 2024.03.29 |
2024.03.27 TIL (1) | 2024.03.27 |
2024.03.26 TIL (0) | 2024.03.26 |
[Next.js] 이미지 태그 화질 조정하기 (0) | 2024.03.22 |