0Pricing
Frontend Academy · Ders

Veri Önbelleğe Alma için SWR ve React Query

Sunucu verilerini almak, önbelleğe almak, yinelenen istekleri birleştirmek ve yeniden doğrulamak için SWR veya TanStack Query kullanarak manuel useEffect veri alma kalıplarının yerini doldurmayı öğrenin.

Veri Önbelleğe Alma için SWR ve React Query, CoddyKit'te ücretsiz bir Frontend Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Frontend Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Frontend Academy kursu toplamda 4 dersten oluşur.

Sunucu Durumu Farklıdır

Ağ verileri yalnızca normal durum verilerinden ibaret değildir. Önbelleğe alma, tekilleştirme, arka planda yenileme, yükleme/hata takibi ve yeniden deneme gerekir. Elle yazılan useEffect + useState veri getirme kalıpları bunları kötü bir şekilde yeniden uygular.

SWR ve TanStack Query

SWR (Vercel): küçük, basit ve yalnızca kanca tabanlıdır. TanStack Query (eski adıyla React Query): daha büyük ve daha fazla özelliğe sahiptir (değişiklikler, sonsuz listeler, önceden getirme, geliştirme araçları). Her ikisi de mükemmeldir.

SWR — Temel Kullanım

useSWR(key, fetcher) veri, hata ve yükleme durumunu döndürür. Anahtara göre önbelleğe alınır; bileşenler arasında yinelenen istekler tekilleştirilir.

import useSWR from 'swr';

const fetcher = (url) => fetch(url).then(r => r.json());

function Profile() {
  const { data, error, isLoading } = useSWR('/api/me', fetcher);

  if (error) return <ErrorMessage error={error} />;
  if (isLoading) return <Spinner />;
  return <h1>{data.name}</h1>;
}

SWR — Yeniden Doğrulama Davranışı

SWR, varsayılan olarak odaklanıldığında (sekme yeniden odak kazandığında) ve yeniden bağlanıldığında yeniden doğrulama yapar. Önbellekteki değeri hemen ('güncel olmayan' olarak) döndürür ve arka planda günceller ('yeniden doğrulama sürerken').

SWR — Değişiklik

mutate(key) önbelleğe alınmış bir sorguyu yeniden doğrular. İyimser bir güncelleme yapmak için ikinci bağımsız değişken olarak yeni verileri geçirin.

import useSWR, { mutate } from 'swr';

async function updateProfile(updates) {
  // Optimistic update — UI reflects change immediately
  mutate('/api/me', { ...currentData, ...updates }, false);
  await fetch('/api/me', { method: 'PUT', body: JSON.stringify(updates) });
  // Revalidate to get the server's canonical state
  mutate('/api/me');
}

TanStack Query — Kurulum

Uygulamanızı, yapılandırılmış bir QueryClient içeren bir QueryClientProvider ile sarın.

import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const client = new QueryClient({
  defaultOptions: {
    queries: { staleTime: 30000, retry: 2 }
  }
});

function App() {
  return (
    <QueryClientProvider client={client}>
      <Routes />
    </QueryClientProvider>
  );
}

useQuery

useQuery({ queryKey, queryFn }) verileri getirir ve önbelleğe alır.

import { useQuery } from '@tanstack/react-query';

function UserList() {
  const { data, isLoading, error } = useQuery({
    queryKey: ['users'],
    queryFn: () => fetch('/api/users').then(r => r.json()),
    staleTime: 60_000 // fresh for 1 minute
  });

  if (isLoading) return <Spinner />;
  if (error) return <ErrorMessage error={error} />;
  return <ul>{data.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
}

Yazma İşlemleri için useMutation

useMutation, yerleşik bekleme/hata durumu ve önbellekleri geçersiz kılmak için bir onSuccess kancasıyla POST/PUT/DELETE işlemlerini yönetir.

import { useMutation, useQueryClient } from '@tanstack/react-query';

function CreateUserForm() {
  const qc = useQueryClient();
  const m = useMutation({
    mutationFn: (user) => fetch('/api/users', { method: 'POST', body: JSON.stringify(user) }),
    onSuccess: () => qc.invalidateQueries({ queryKey: ['users'] })
  });

  return <button onClick={() => m.mutate({ name: 'Alice' })} disabled={m.isPending}>Create</button>;
}

Sorguları Geçersiz Kılma

Bir değişiklikten sonra, yeniden getirmeyi tetiklemek için ilgili sorguları geçersiz kılın. queryClient.invalidateQueries({ queryKey: ['users'] }) bunları güncel değil olarak işaretler ve bağlanmış durumdalarsa yeniden getirir.

İyimser Güncellemeler

TanStack Query, onMutate, onError ve onSettled aracılığıyla birinci sınıf iyimser güncelleme desteği sunar.

useMutation({
  mutationFn: updateUser,
  onMutate: async (newUser) => {
    await qc.cancelQueries({ queryKey: ['user', newUser.id] });
    const previous = qc.getQueryData(['user', newUser.id]);
    qc.setQueryData(['user', newUser.id], newUser);
    return { previous };
  },
  onError: (_, newUser, ctx) => {
    qc.setQueryData(['user', newUser.id], ctx.previous); // rollback
  },
  onSettled: (_, __, newUser) => {
    qc.invalidateQueries({ queryKey: ['user', newUser.id] });
  }
});

Sonsuz Sorgular

useInfiniteQuery, sayfalandırılmış/sonsuz kaydırmalı listeleri yönetir; fetchNextPage işlevini sunar ve yüklenen tüm sayfaları izler.

React Query Geliştirme Araçları

Tüm önbelleğe alınmış sorguları ve durumlarını gösteren, ayrıca bunları elle geçersiz kılmanıza olanak tanıyan kayan bir panel eklemek için @tanstack/react-query-devtools ekleyin.

Hızlı Kontrol

Elle yazılan useEffect + fetch yerine SWR veya TanStack Query kullanmanın temel yararı nedir?

Özet: SWR ve React Query

Sunucu durumu önbelleğe alma, tekilleştirme ve yeniden doğrulama gerektirir. SWR: küçük ve basit. TanStack Query: daha fazla özellik (değişiklikler, sonsuz listeler, geliştirme araçları). Okuma işlemleri için useQuery, yazma işlemleri için useMutation kullanılır. Değişikliklerden sonra invalidateQueries çağrılır. onMutate/onError ile iyimser güncellemeler yapılır. Her ikisi de üretim uygulamalarında elle yazılan useEffect+fetch kullanımını gereksiz kılar.

Sıkça Sorulan Sorular

“Veri Önbelleğe Alma için SWR ve React Query” dersi ücretsiz mi?

Evet — “Veri Önbelleğe Alma için SWR ve React Query” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Frontend Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Frontend Academy kursu toplamda 4 dersten oluşur.

“Veri Önbelleğe Alma için SWR ve React Query” dersinde ne öğreneceğim?

Sunucu verilerini almak, önbelleğe almak, yinelenen istekleri birleştirmek ve yeniden doğrulamak için SWR veya TanStack Query kullanarak manuel useEffect veri alma kalıplarının yerini doldurmayı öğre… Frontend Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Frontend Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Frontend Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Veri Önbelleğe Alma için SWR ve React Query” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Frontend Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Frontend Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Fetch API: GET POST PUT DELETE
  2. Axios: Interceptor'lar ve Temel URL
  3. Hata Yönetimi: HTTP Durum Kodları
  4. Veri Önbelleğe Alma için SWR ve React Query
← Frontend Academy Sayfasına Dön