CodeBlanks Logo Icon CodeBlanks

Client ve Server ayrımı

'use client' yönergesini ve ayrım kurallarını öğrenirsin.

Client ve Server ayrımı

Server component'ler veri çeker ve HTML üretir; client component'ler interaktivite sağlar. İkisini ayırmanın anahtarı, sınırı doğru yerleştirmektir.

Bir sayfa server component olur, içindeki düğmeler client component olur. Veri server'da çekilir, özellik olarak client bileşene geçilir. Fonksiyon ve sınıf örneği geçilemez.

Bu ayrım paket boyutunu küçültür ve ilk çizimi hızlandırır.

Sınır yerleşimi

'use client' yazılan dosyanın tüm içe aktardıkları da client tarafına geçer. Bu yüzden yönergeyi mümkün olan en alt dosyaya koymak paketi küçük tutar.

Örneğin bir form bileşeni client'tır; ama onu çağıran sayfa server'da kalabilir. Böylece sayfanın veri çekme kısmı sunucuda çalışır.

Küçük düğmeler için ayrı dosya açmak, ağaç boyunca istemcileşmeyi önler.

Uygulama LikeButton client bileşenini yaz

LikeButton client bileşeni yaz. En üste 'use client'. useState(0) ile likes tut. <button onClick={() => setLikes(likes + 1)}>{likes}</button> döndür. Dışa aktar.

Başlangıç kodu

App.jsx
// LikeButton client bileşenini buraya yaz

Örnek çözüm

App.jsx
'use client';
import { useState } from 'react';

function LikeButton() {
  const [likes, setLikes] = useState(0);
  return <button onClick={() => setLikes(likes + 1)}>{likes}</button>;
}
export default LikeButton;

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Boşluğu doldur: client bileşene veri geç

Soru
// page.jsx (server)
import LikeButton from './LikeButton';
async function Page() {
  const count = await getCount();
  return <LikeButton ____={count} />;
}
Cevap
// page.jsx (server)
import LikeButton from './LikeButton';
async function Page() {
  const count = await getCount();
  return <LikeButton initial={count} />;
}

Açıklama: Server'dan client'a veri özellik olarak geçer.

2 Server component'ten client component'e ne geçilemez?

  • Sayı ve dizi
  • Dize
  • Fonksiyon Doğru cevap
  • Nesne

Açıklama: Fonksiyonlar serileştirilemediği için geçilemez.

3 Sınır kavramlarını eşleştir

Kavram Anlamı
'use client' İstemciyi işaretler
async Server'da veri çeker
prop Veriyi taşır
fonksiyon Geçilemez

Uzman seviye bölümündeki tüm dersler