扫码一下
查看教程更方便
对于复杂的应用程序,使用预定义路径定义路由并不总是足够的。 在 Next.js 中,我们可以动态创建路由。通过将括号添加到页面 ([param]) 来创建动态路由(也称为 url slugs、pretty urls 等)。
使用设置路径的 getStaticPaths()
方法和 getStaticProps()
方法更新 [id].js 文件从而可以根据 id 获取内容。
[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 } } }
post.js 包含 getAllPostIds()
方法来获取 ids 和 getPostData()
方法来获取相应的内容。
posts.js
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' } } ]; }
运行以下命令启动服务器
$ npm run dev
在浏览器中打开 localhost:3000/posts/one ,将看到以下输出。
在浏览器中打开 localhost:3000/posts/two ,将看到以下输出。