refactor: katalog feature'ı — sayfalar senkron kompozisyona geçti (Faz 2)
- 8 katalog bileşeni src/features/katalog/components/ altına taşındı; katalog-queries.ts (server-only) lib/katalog'un feature kapısı oldu - /bolumler ve /universiteler'in sayfa içi fetch+inline bileşenleri BolumKatalogu/UniversiteKatalogu feature bileşenlerine çıkarıldı - 6 sayfa async'ten senkron'a: params.then() + sayfada Suspense, skeleton'lar feature bileşeninin yanında (BolumIcerikSkeleton vb.) - generateStaticParams artık *-queries yerine bileşen dosyasının helper'larını kullanıyor (bolumStaticSlugs, uniSayfaStaticParams) - Davranış değişikliği yok; route durumları aynı (◐), 1917 statik sayfa Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,28 +1,32 @@
|
||||
import { Suspense } from "react";
|
||||
import type { Metadata } from "next";
|
||||
import { getAllBolumSlugs } from "@/lib/katalog";
|
||||
import { BolumIcerik, bolumSayfaMetadata } from "./bolum-icerik";
|
||||
import {
|
||||
BolumIcerik,
|
||||
BolumIcerikSkeleton,
|
||||
bolumSayfaMetadata,
|
||||
bolumStaticSlugs,
|
||||
} from "@/features/katalog/components/bolum-icerik";
|
||||
|
||||
// Tüm bölümler build sırasında bilinir (veri ancak ingest + deploy ile
|
||||
// değişir); bilinmeyen slug getBolumBySlug'dan null dönüp notFound()'a düşer.
|
||||
// (dynamicParams cacheComponents ile uyumsuz olduğundan kullanılamıyor.)
|
||||
export function generateStaticParams() {
|
||||
return getAllBolumSlugs().map((slug) => ({ slug }));
|
||||
return bolumStaticSlugs().map((slug) => ({ slug }));
|
||||
}
|
||||
|
||||
export async function generateMetadata({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ slug: string }>;
|
||||
}): Promise<Metadata> {
|
||||
}: PageProps<"/bolum/[slug]">): Promise<Metadata> {
|
||||
const { slug } = await params;
|
||||
return bolumSayfaMetadata(slug, 1);
|
||||
}
|
||||
|
||||
export default async function BolumPage({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ slug: string }>;
|
||||
}) {
|
||||
const { slug } = await params;
|
||||
return <BolumIcerik slug={slug} sayfa={1} />;
|
||||
export default function BolumPage({ params }: PageProps<"/bolum/[slug]">) {
|
||||
return (
|
||||
<Suspense fallback={<BolumIcerikSkeleton />}>
|
||||
{params.then(({ slug }) => (
|
||||
<BolumIcerik slug={slug} sayfa={1} />
|
||||
))}
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user