Skip to content

Commit ff83b20

Browse files
Migrate dynamic route params for Next 16
1 parent 74694a8 commit ff83b20

1 file changed

Lines changed: 12 additions & 10 deletions

File tree

‎app/book/[part]/chapter/[slug]/page.tsx‎

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,23 @@ export function generateStaticParams() {
1818
return getAllChapterPaths().map(p => ({ part: p.part, slug: p.slug }))
1919
}
2020

21-
export function generateMetadata({ params }: { params: { part: string; slug: string } }) {
22-
const part = getParts().find(p => p.id === params.part)
23-
const chapter = part?.chapters.find(c => c.slug === params.slug)
21+
export async function generateMetadata({ params }: { params: Promise<{ part: string; slug: string }> }) {
22+
const { part: partId, slug } = await params
23+
const part = getParts().find(p => p.id === partId)
24+
const chapter = part?.chapters.find(c => c.slug === slug)
2425
if (!part || !chapter) return { title: '章节未找到' }
2526
const partLabel = part.id === 'appendix' ? part.title : `第 ${part.number} 部分 · ${part.title}`
2627
return { title: `${chapter.title} | ${partLabel}` }
2728
}
2829

29-
export default async function ChapterPage({ params }: { params: { part: string; slug: string } }) {
30-
const part = getParts().find(p => p.id === params.part)
31-
const chapter = part?.chapters.find(c => c.slug === params.slug)
30+
export default async function ChapterPage({ params }: { params: Promise<{ part: string; slug: string }> }) {
31+
const { part: partId, slug } = await params
32+
const part = getParts().find(p => p.id === partId)
33+
const chapter = part?.chapters.find(c => c.slug === slug)
3234

3335
if (!part || !chapter) notFound()
3436

35-
const content = getChapterContent(params.part, params.slug)
37+
const content = getChapterContent(partId, slug)
3638
if (!content) notFound()
3739

3840
return (
@@ -55,12 +57,12 @@ export default async function ChapterPage({ params }: { params: { part: string;
5557
/>
5658
</div>
5759
<PageFeedback
58-
pagePath={`/book/${params.part}/chapter/${params.slug}`}
60+
pagePath={`/book/${partId}/chapter/${slug}`}
5961
pageTitle={chapter.title}
60-
sourcePath={`content/${params.part}/${params.slug}.mdx`}
62+
sourcePath={`content/${partId}/${slug}.mdx`}
6163
editLabel="编辑本章"
6264
/>
63-
<ChapterNav currentPart={params.part} currentSlug={params.slug} />
65+
<ChapterNav currentPart={partId} currentSlug={slug} />
6466
</article>
6567
)
6668
}

0 commit comments

Comments
 (0)