브라우저에 http://localhost:3000/category/dress 를 입력하면 dress가 렌더링됩니다.
React에서 react-router-dom을 사용하면 Nested Routing 설정으로 코드가 길어질 수 있지만, Next.js에서는 위와 같이 params를 직접 받을 수 있어 간결합니다.
2. searchParams
searchParams는 상품 검색 시 URI로 검색 정보를 넘길 때 사용됩니다.
서버 컴포넌트(페이지) 예시:
클라이언트 컴포넌트에서 동일한 기능 구현:
3. zod, loading, error boundary, dynamic routes 사용 예시
폴더 구조 예시:
zod 설치:
아래 예시는 http://localhost:8077/events/seoul?sp1=test&pageno=2 접속 시
params = { id: 'seoul' }
searchParams = { sp1: 'test', pageno: '2' }
page.tsx (서버 컴포넌트)
loading.tsx에는 spinner 애니메이션이나 아이콘을 등록할 수 있고, UI 라이브러리를 이용하여 <Skeleton />을 등록할 수도 있습니다.
loading.tsx 예시 (간단)
error.tsx는 반드시 Client Component에서만 동작합니다.
error.tsx (클라이언트 전용)
만약 error.tsx가 없다면, 상위 레벨의 에러 바운더리가 없을 경우 앱 전체가 crash되는 현상이 발생할 수 있습니다. 그러므로 각 세그먼트(폴더)에 에러 컴포넌트를 배치하여 앱 전체의 크래시를 방지하고, 사용자에게 재시도 등 복구 수단을 제공하는 것이 좋습니다.
위의 경우는 searchParams로 유효성 검사를 하였지만 react-query 혹은 fetch를 이용하여서도 동일한 방식으로 적용될 수 있습니다.