일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Kotlin If
- 파이썬 반복문
- 파이썬
- 클래스 속성
- 파이썬 제어문
- github
- 넥스트js
- Python
- 성공
- 좋은글
- Kotlin 클래스
- 파이썬 장고
- Kotlin 조건문
- django virtualenv
- 다중조건문
- Python Class
- Kotlin else if
- 희망
- Variable declaration
- 자바 기본타입
- Kotlin Class
- 강제 타입변환
- 도전
- activate 오류
- 장고 가상환경
- python Django
- git
- Kotlin 클래스 속성정의
- 파이썬 클래스
- NextJs
Archives
- Today
- Total
키모스토리
#6. Dynamic Routes 본문
반응형
페이지주소 뒤에 파라메터를 이용한 Route 방식 하위 폴더명을 대괄호를 이용해서 작성 => [id]
/app/(movies)/movies/[id]/page.tsx
요청 URL: http://localhost:3000/movies/1
params, searchParams
export const metadata = {
title: 'Movie Detail',
}
export default async function MovieDetail({
params, // [id] 폴더이름
searchParams, // ?key=value&key=value 형식
}: {
params: Promise<{ id: string}>;
searchParams: Promise<{ region?: string, genre?: string }>;
}) {
const {id} = await params;
const {region, genre} = await searchParams;
return (
<div>
<p>Movie Id : {id}</p>
<p>region : {region}</p>
<p>Genre : {genre}</p>
</div>
)
}
요청 예시
- 요청 URL: http://localhost:3000/movies/132423222?region=kr&genre=comedy
- 결과: Movie ID: 123456, Region: kr
📌 설명
- params.id → 동적 경로에서 값 가져옴 (/movies/[id] 설정 필요)
- searchParams.region → URL 쿼리에서 region 값 가져옴
- searchParams.genre → URL 쿼리에서 genre 값 가져옴
서버 컴포넌트에서 searchParams 받는 방법
서버 컴포넌트에서는 searchParams를 직접 인자로 받을 수 있습니다.
export default function MovieDetail({
params,
searchParams,
}: {
params: { id: string };
searchParams: { region?: string };
}) {
return (
<div>
Movie ID: {params.id}, Region: {searchParams.region}
</div>
);
}
요청 예시
- 요청 URL: http://localhost:3000/movies/123456?region=kr
- 결과: Movie ID: 123456, Region: kr
📌 설명
- params.id → 동적 경로에서 값 가져옴 (/movies/[id] 설정 필요)
- searchParams.region → URL 쿼리에서 region 값 가져옴
✅ 클라이언트 컴포넌트에서 useSearchParams 사용하는 방법
클라이언트 컴포넌트에서 useSearchParams를 사용하려면 "use client"를 선언해야 합니다.
"use client";
import { useSearchParams } from "next/navigation";
export default function MovieDetail({ params }: { params: { id: string } }) {
const searchParams = useSearchParams();
const region = searchParams.get("region");
return (
<div>
Movie ID: {params.id}, Region: {region}
</div>
);
}
📌 주의:
- useSearchParams는 클라이언트 컴포넌트에서만 사용 가능하므로, "use client"를 추가해야 합니다.
- 서버 컴포넌트에서 사용하려면 searchParams를 직접 받는 방식을 사용하세요.
✅ 결론: 언제 어떤 방법을 사용해야 할까?
컴포넌트 유형searchParams 사용 방법
서버 컴포넌트 | export default function Page({ searchParams }) |
클라이언트 컴포넌트 | "use client"; import { useSearchParams } from "next/navigation" |
이제 Next.js 14에서도 올바르게 searchParams를 사용할 수 있습니다! 🚀
반응형
'Web Devlopment > NextJs' 카테고리의 다른 글
#8. fetch - Promise.all, Suspense (0) | 2025.03.28 |
---|---|
#7. fetch (0) | 2025.03.28 |
#5. metadata (0) | 2025.03.27 |
#4. layout (0) | 2025.03.27 |
#3. Next.js에서의 렌더링 방식 (0) | 2025.03.27 |