Next.js 13+ App Router mimarisi, bileşenleri Server Component ve Client Component olarak ayırır. Bu ayrım, performans ve veri yönetimi açısından önemlidir.
useState
, useEffect
gibi Client Hooks çalışmaz.// page.tsx
export default async function CabinPage({ params }) {
const cabin = await getCabin(params.cabinId); // Sunucuda fetch
return <div>{cabin.name}</div>;
}
💡 İpucu: Eğer hook veya state kullanmanız gerekiyorsa, ilgili bileşeni client component
olarak işaretleyin.
use client
direktifi ile tanımlanır."use client";
import { useState } from "react";
export default function Counter() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(count + 1)}>{count}</button>;
}
// app/loader.js
export default function Loader() {
return <div className="spinner">Loading...</div>;
}