Yükleyiciler ve Eylemler (Veri Yönlendirici API'si)
Yükleyicilerle rota verilerini oluşturmadan önce getirin ve eylemlerle form gönderimlerini yönetin.
Yükleyiciler ve Eylemler (Veri Yönlendirici API'si), CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 2. 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, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
Yükleyiciler Nedir
React Router v6.4+ Veri Yönlendiricisi'nde yükleyici, rota görüntülenmeden önce veri getiren ve useEffect ile veri getirme yaklaşımının yerini alan, rotaya bağlı eşzamansız bir işlevdir.
Yükleyici Tanımlama
Bir rota nesnesine loader özelliği ekleyiniz. Bu özellik { params, request } değerini alır ve veri (veya bir yanıt) döndürür.
import { createBrowserRouter } from 'react-router-dom';
async function userLoader({ params }) {
const res = await fetch(`/api/users/${params.id}`);
if (!res.ok) throw new Response('Not Found', { status: 404 });
return res.json();
}
const router = createBrowserRouter([
{ path: '/users/:id', element: <UserDetail />, loader: userLoader },
]);useLoaderData ile Yükleyici Verilerini Okuma
useLoaderData(), yükleyicinin döndürdüğü değeri döndürür. Bileşen yalnızca yükleyici tamamlandıktan sonra görüntülenir.
import { useLoaderData } from 'react-router-dom';
function UserDetail() {
const user = useLoaderData();
return <h1>{user.name}</h1>;
}Eylemler Nedir
eylem, veri değişikliklerini (form gönderimleri, silme işlemleri) yöneten eşzamansız bir işlevdir. Bir form POST işleminden sonra rota yeniden görüntülenmeden önce çalışır.
async function createUserAction({ request }) {
const formData = await request.formData();
const name = formData.get('name');
await fetch('/api/users', {
method: 'POST',
body: JSON.stringify({ name }),
headers: { 'Content-Type': 'application/json' },
});
return redirect('/users');
}Eylemleri Tetiklemek için Form Kullanımı
<form> öğesini React Router'ın <Form> öğesiyle değiştiriniz. Gönderim sırasında alanları FormData olarak serileştirir ve rotanın eylemini çağırır.
import { Form } from 'react-router-dom';
function NewUser() {
return (
<Form method="post">
<input name="name" />
<button type="submit">Create</button>
</Form>
);
}Eylemlerden Veri Döndürme
Eylemler yalnızca yönlendirme yapmak zorunda değildir; veri de döndürebilir. Bu veriyi bileşende useActionData() ile okuyunuz. Bu, doğrulama hatalarını döndürmek için kullanışlıdır.
async function loginAction({ request }) {
const data = await request.formData();
const errors = validate(data);
if (errors) return errors; // returned to useActionData
await login(data);
return redirect('/dashboard');
}
function Login() {
const errors = useActionData();
return (
<Form method="post">
{errors?.email && <p>{errors.email}</p>}
<input name="email" />
</Form>
);
}useNavigation ile Yükleme Durumları
useNavigation(), bir yükleyicinin veya eylemin çalışıp çalışmadığını bildirir; böylece yükleme göstergeleri görüntüleyebilir veya gönderme düğmelerini devre dışı bırakabilirsiniz.
function SubmitButton() {
const navigation = useNavigation();
const isSubmitting = navigation.state === 'submitting';
return (
<button type="submit" disabled={isSubmitting}>
{isSubmitting ? 'Saving...' : 'Save'}
</button>
);
}defer() ile Ertelenmiş Veriler
Görüntülemeyi engellemeden bir yükleyiciden yavaş veri vaatleri döndürmek için defer() kullanınız; ardından bunları <Await> ve Suspense ile açınız.
import { defer, Await } from 'react-router-dom';
async function slowLoader() {
return defer({ fast: await getFast(), slow: getSlow() });
}
function Page() {
const { fast, slow } = useLoaderData();
return (
<>
<h1>{fast.title}</h1>
<Suspense fallback={<p>Loading...</p>}>
<Await resolve={slow}>{data => <Chart data={data} />}</Await>
</Suspense>
</>
);
}Eylemlerden Sonra Yeniden Doğrulama
Bir eylem tamamlandıktan sonra React Router, verileri yenilemek için etkin tüm yükleyicileri otomatik olarak yeniden çalıştırır; elle yeniden getirme yapmanız gerekmez.
Yükleyicilerde Hata İşleme
Bir yükleyiciden Response veya herhangi bir hata fırlatınız; React Router bunu yakalar ve rotanın errorElement öğesini görüntüler. Bu öğeye useRouteError() aracılığıyla erişebilirsiniz.
function ErrorPage() {
const error = useRouteError();
return (
<div>
<h1>{error.status} {error.statusText}</h1>
</div>
);
}Gezinme Dışı Veri Değişiklikleri için Fetcher'lar
useFetcher(), gezinme yapmadan yükleyicileri veya eylemleri çağırmanızı sağlar. Sayfadan ayrılmadan bir gönderiyi beğenmek gibi satır içi formlar için kullanışlıdır.
function LikeButton({ postId }) {
const fetcher = useFetcher();
return (
<fetcher.Form method="post" action={`/posts/${postId}/like`}>
<button type="submit">Like</button>
</fetcher.Form>
);
}Kısa Kontrol
Bir rotanın yükleyici işlevinin döndürdüğü verileri hangi kanca okur?
Özet
React Router'ın Veri API'si, görüntülemeden önce veri getirmek için yükleyicileri, veri değişikliklerini yönetmek için ise eylemleri kullanır. Bileşenler yükleyici verilerini useLoaderData(), eylem sonuçlarını useActionData() ve gezinme durumunu useNavigation() aracılığıyla okur.
Sıkça Sorulan Sorular
“Yükleyiciler ve Eylemler (Veri Yönlendirici API'si)” dersi ücretsiz mi?
Evet — “Yükleyiciler ve Eylemler (Veri Yönlendirici API'si)” 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 React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“Yükleyiciler ve Eylemler (Veri Yönlendirici API'si)” dersinde ne öğreneceğim?
Yükleyicilerle rota verilerini oluşturmadan önce getirin ve eylemlerle form gönderimlerini yönetin. React 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.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React 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 2. dersidir.
“Yükleyiciler ve Eylemler (Veri Yönlendirici API'si)” 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 React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React 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
- İç İçe Rotalar ve Outlet Düzenleri
- Yükleyiciler ve Eylemler (Veri Yönlendirici API'si)
- Korumalı Rotalar ve Kimlik Doğrulama Koruyucuları
- URL Arama Parametrelerinde Durum Yönetimi