feat: add case detail pages with SSG and dynamic routing

This commit is contained in:
张翔
2026-02-13 14:53:52 +08:00
parent 7914decdaf
commit 34c96c119d
3 changed files with 411 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
import { Metadata } from 'next';
import { notFound } from 'next/navigation';
import { CASES } from '@/lib/constants';
import { CaseDetailClient } from './client';
export async function generateStaticParams() {
return CASES.map((caseItem) => ({
id: caseItem.id,
}));
}
export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise<Metadata> {
const { id } = await params;
const caseItem = CASES.find((c) => c.id === id);
if (!caseItem) {
return {
title: '案例未找到',
};
}
return {
title: `${caseItem.title} - 睿新致远`,
description: caseItem.description,
};
}
export default async function CaseDetailPage({ params }: { params: Promise<{ id: string }> }) {
const { id } = await params;
const caseItem = CASES.find((c) => c.id === id);
if (!caseItem) {
notFound();
}
return <CaseDetailClient caseItem={caseItem} />;
}