CodeBlanks Logo Icon CodeBlanks

SWR ile veri çekme

SWR ile önbellekli veri çekme yapmayı öğrenirsin.

SWR nedir?

SWR (stale-while-revalidate), Vercel'in önbellekli veri çekme kütüphanesidir. Bir useSWR çağrısı veriyi çeker, önbelleğe alır ve arka planda yeniler.

SWR, aynı anahtarı kullanan tüm bileşenlerde veriyi paylaştırır; böylece tek istekle çok bileşen güncellenir. Bu, server state yönetimini kolaylaştırır.

SWR otomatik yeniden deneme, odaklanınca yenileme ve pessimistic güncelleme gibi özellikler sunar.

useSWR çağrısı

useSWR iki parametre alır: bir anahtar (genelde URL) ve isteğe bağlı bir fetcher fonksiyonu. Dönüş değeri { data, error, isLoading } nesnesidir.

İlk çizimde isLoading true olur; veri gelince data dolar ve isLoading false olur. Hata durumunda error set edilir.

Anahtar aynı olduğu sürece SWR önbelleği kullanır; bu sayede sayfalar arası geçişte veri anında görünür.

Uygulama useSWR ile ürün listesi

Aşağıdaki iskeleti tamamla. ProductList bileşeni yaz. İçinde useSWR ile '/api/products' adresini çek (fetcher olarak (url) => fetch(url).then(r => r.json()) kullan). isLoading ise <p>Yükleniyor</p>, error ise <p>Hata</p>, yoksa <ul> içinde products.map(p => <li key={p.id}>{p.name}</li>) döndür. export default ekle.

Başlangıç kodu

App.jsx
import useSWR from 'swr';

// ProductList bileşenini buraya yaz

Örnek çözüm

App.jsx
import useSWR from 'swr';

function ProductList() {
  const { data: products, error, isLoading } = useSWR(
    '/api/products',
    (url) => fetch(url).then((r) => r.json())
  );
  if (isLoading) return <p>Yükleniyor</p>;
  if (error) return <p>Hata</p>;
  return <ul>{products.map((p) => <li key={p.id}>{p.name}</li>)}</ul>;
}

export default ProductList;

Soru ve cevaplar

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

1 SWR neyin kısaltması?

App.jsx
It shows stale cached data while revalidating in the background.
  • stale-while-revalidate Doğru cevap
  • state-with-reducer
  • sync-web-request
  • server-worker-render

Açıklama: SWR, stale-while-revalidate anlamına gelir.

2 useSWR dönüş değeri

Soru
const { data, error, ____ } = useSWR('/api/products', fetcher);
Cevap
const { data, error, isLoading } = useSWR('/api/products', fetcher);

Açıklama: isLoading, useSWR'ün üç durumundan biridir.

3 SWR ile veri çekme: kavramları eşleştir

Kavram Anlamı
useSWR Veri çeker
data Gelen veri
error Hata nesnesi
isLoading Yükleniyor mu

İleri seviye bölümündeki tüm dersler