🌀 파일 기반 라우팅
- 페이지 기반의 라우터, 폴더 구조를 통해 알아서 추론해서 라우팅함
pages(폴더)
┗_app.js => 내가 만든 모든 페이지가 초기화될 때 로딩되는 파일
┗ index.js => 루트 페이지 ( / )
┗ about.js => /about
┗ products(폴더)
┗ index.js => /products
┗ [id].js => /products/id (동적 라우팅, 대괄호 사용)
- 위에서 about.js는 정적 라우트 파일을 추가한 것이고, pages폴더 안에 products라는 폴더를 추가하면 그 안에 또 index.js파일을 생성할 수 있는데, 이게 products의 상위 페이지가 되고 그 아래로 다른 페이지들을 더 만들 수 있음
- 즉, pages폴더안에 about.js 파일을 만드는 것과 pages 폴더 안에 about폴더를 만들고 index.js파일을 만드는 것은 방법만 다를 뿐 결과는 같아서 본인이 선호하는 방식을 사용하면 됨. 하지만 중첩된 페이지 /products/id 같은 경우에는 폴더를 만드는 방식을 선택해야 함
🌀 동적 라우팅
✏️ 동적 라우팅???
- 여러 종류의 데이터를 불러와야 하는 페이지를 생성할 때 사용
- 폴더 아래 대괄호([])를 사용해서 js파일을 만들면 별도의 설정 없이 동적 라우팅이 가능해진다.
- products 폴더안에 [id]. js 파일이 있으면 /products/1, /products/2, /products/3, 이렇게 동적으로 페이지가 생성되는데, 대괄호 사이에는 가급적이면 중복 없는 값을 적어주는 것이 좋음
- next는 이미 정의된 정적 라우팅 페이지 파일을 우선하기 때문에 정적 파일과 중복되면 정적 파일이 나옴.



➡️ portfolio파일 안에 동적 라우팅이 있고, 어떤 설정을 안해놓았기때문에 다 똑같은 페이지가 나온다.
✏️ useRouter
- 사용자가 URL에 입력한 구체적인 값에 접근하기 위해서 사용
- next가 기본으로 제공해주는 라이브러리의 하위 패키지인 라우터에서 가져옴
- router의 메서드
- pathname : 경로를 알려줌
- querty: 동적 라우팅 시 동적 경로값 알려줌, 인코딩 된 구체적인 값에 접근 가능
export default function PortfolioProjectPage() {
const router = useRouter()
//라우터 객체 반환
console.log(router.pathname)
console.log(router.query)
return (
<div>
<h1>The Portfolio Project Page</h1>
</div>
)
}
- pathname은 파일경로를 반환하고
- query는 구체적 값을 반환

✏️ Catch-All 라우팅
- 모든 경로를 한번에 갖고 오는 라우트 기능, 어떤 경로를 가지고 있던 다 가지고 옴
- 스프레드 연산자를 사용해서 폴더 이름을 작성. [... posts]. js
- 가져온 값은 데이터베이스로 보낼 때나 게시물을 필터링할 때 사용할 수 있음
import { useRouter } from "next/router"
export default function BlogPostsPage() {
const router = useRouter()
console.log(router.query)
return (
<div>
<h1>블로그 포스트</h1>
</div>
)
}

320x100
'Next.js' 카테고리의 다른 글
navigating (feat. page router) (0) | 2024.05.18 |
---|---|
Next.JS의 보호된 파일명 (0) | 2024.05.03 |
Next.js 배포 (0) | 2023.09.20 |
server component와 client component (0) | 2023.06.28 |
NEXT의 pages (0) | 2023.06.28 |