Next.js-동적 라우팅
Next.js에서는 동적으로 경로를 만들 수 있습니다. 이 예에서는 즉시 페이지와 해당 라우팅을 만듭니다.
Step 1. Define [id].js file− [id] .js는 id가 상대 경로가 될 동적 페이지를 나타냅니다. 이 파일을 pages / post 디렉토리에 정의하십시오.
Step 2. Define lib/posts.js− posts.js는 ID와 내용을 나타냅니다. lib 디렉토리는 루트 디렉토리에 생성됩니다.
[id] .js
경로를 설정하는 getStaticPaths () 메서드와 id를 기반으로 콘텐츠를 가져 오기 위해 getStaticProps () 메서드를 사용하여 [id] .js 파일을 업데이트합니다.
import Link from 'next/link'
import Head from 'next/head'
import Container from '../../components/container'
import { getAllPostIds, getPostData } from '../../lib/posts'
export default function Post({ postData }) {
return (
<Container>
{postData.id}
<br />
{postData.title}
<br />
{postData.date}
</Container>
)
}
export async function getStaticPaths() {
const paths = getAllPostIds()
return {
paths,
fallback: false
}
}
export async function getStaticProps({ params }) {
const postData = getPostData(params.id)
return {
props: {
postData
}
}
}
posts.js
posts.js에는 ID를 가져 오는 getAllPostIds ()와 해당 내용을 가져 오는 getPostData ()가 포함되어 있습니다.
export function getPostData(id) {
const postOne = {
title: 'One',
id: 1,
date: '7/12/2020'
}
const postTwo = {
title: 'Two',
id: 2,
date: '7/12/2020'
}
if(id == 'one'){
return postOne;
}else if(id == 'two'){
return postTwo;
}
}
export function getAllPostIds() {
return [{
params: {
id: 'one'
}
},
{
params: {
id: 'two'
}
}
];
}
Next.js 서버 시작
서버를 시작하려면 다음 명령을 실행하십시오-.
npm run dev
> [email protected] dev \Node\nextjs
> next
ready - started server on http://localhost:3000
event - compiled successfully
event - build page: /
wait - compiling...
event - compiled successfully
event - build page: /next/dist/pages/_error
wait - compiling...
event - compiled successfully
출력 확인
브라우저에서 localhost : 3000 / posts / one을 열면 다음 출력이 표시됩니다.
브라우저에서 localhost : 3000 / posts / two를 열면 다음 출력이 표시됩니다.