0Pricing
React Academy · Ders

createAsyncThunk ile Asenkron Mantık

API çağrılarını Redux'ta createAsyncThunk ve pending/fulfilled/rejected yaşam döngüsüyle yönetin.

createAsyncThunk ile Asenkron Mantık, 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.

Hoş Geldiniz

Bu derste Redux'ta createAsyncThunk ile API çağrılarını yönetecek ve diliminizde beklemede, tamamlandı ve reddedildi yaşam döngüsü eylemlerini işleyeceksiniz.

createAsyncThunk Nedir?

createAsyncThunk, üç yaşam döngüsü eylemini otomatik olarak gönderen bir thunk eylem oluşturucusu üretir: beklemede (başlatıldı), tamamlandı (çözümlendi) ve reddedildi (başarısız oldu). Her birini extraReducers içinde işlersiniz.

Thunk Tanımlama

createAsyncThunk işlevini bir tür dizesi ve eşzamansız bir yük üretici işleviyle çağırın. Tamamlandı eyleminin yükü olarak istediğiniz veriyi döndürün.
import { createAsyncThunk } from '@reduxjs/toolkit';

export const fetchUser = createAsyncThunk(
  'users/fetchById',
  async (userId) => {
    const response = await fetch('/api/users/' + userId);
    return response.json(); // becomes action.payload on fulfilled
  }
);

extraReducers İçinde İşleme

Dilimdeki extraReducers içine üç yaşam döngüsü durumunun tamamı için durumlar ekleyin. Yüklenme, veri ve hata durumlarını uygun şekilde yönetin.
extraReducers: (builder) => {
  builder
    .addCase(fetchUser.pending, state => {
      state.loading = true;
      state.error = null;
    })
    .addCase(fetchUser.fulfilled, (state, action) => {
      state.loading = false;
      state.user = action.payload;
    })
    .addCase(fetchUser.rejected, (state, action) => {
      state.loading = false;
      state.error = action.error.message;
    });
}

Thunk'ı Gönderme

Thunk'ı bir bileşenden useDispatch ile gönderin. Argümanları doğrudan thunk eylem oluşturucusuna aktarın.
const dispatch = useDispatch();
useEffect(() => {
  dispatch(fetchUser(userId));
}, [userId]);

Thunk İçinde Duruma Erişme

Yük üretici, ikinci bağımsız değişkeni olarak bir thunkAPI nesnesi alır. Mevcut Redux durumunu okumak için thunkAPI.getState() işlevini, diğer eylemleri göndermek için thunkAPI.dispatch() işlevini kullanın.
export const saveItem = createAsyncThunk(
  'items/save',
  async (item, { getState }) => {
    const { auth } = getState();
    return fetch('/api/items', {
      method: 'POST',
      headers: { Authorization: 'Bearer ' + auth.token },
      body: JSON.stringify(item),
    }).then(r => r.json());
  }
);

rejectWithValue ile Hataları İşleme

Reddedilen duruma özel bir hata yükü aktarmak için thunkAPI.rejectWithValue() işlevini kullanın. Reddedilen eylemin action.payload değeri, özel hata nesnenizi içerir.
export const fetchData = createAsyncThunk(
  'data/fetch',
  async (id, { rejectWithValue }) => {
    const res = await fetch('/api/' + id);
    if (!res.ok) return rejectWithValue({ status: res.status });
    return res.json();
  }
);
// In rejected case: action.payload.status is available

Thunk'ları İptal Etme

Thunk içindeki fetch çağrınıza bir AbortController sinyali aktarın. Thunk, dispatch.abort() ile iptal edildiğinde createAsyncThunk, sinyali otomatik olarak thunkAPI.signal üzerinden sağlar.
async (id, { signal }) => {
  const res = await fetch('/api/' + id, { signal });
  return res.json();
}

Gönderilmiş Bir Thunk'ı Bekleme

Bir thunk için dispatch() bir vaat döndürür. Eşzamansız işin ne zaman tamamlandığını öğrenmek için bu vaadi await ile bekleyebilirsiniz; bu, kaydetme sonrası yönlendirme kalıpları için kullanışlıdır.
const result = await dispatch(saveItem(data));
if (saveItem.fulfilled.match(result)) {
  navigate('/success');
}

Oluşturucu Gösterimi ve Nesne Gösterimi

extraReducers içinde builder.addCase geri çağırma kalıbını kullanın; bu kalıp tür güvenlidir ve desteklenir. Eski nesne anahtarı gösterimi, güncel RTK sürümlerinde kullanımdan kaldırılmıştır.

Hızlı Kontrol

createAsyncThunk içindeki eşzamansız işlev bir hata fırlattığında ne olur?

Özet

createAsyncThunk, beklemede/tamamlandı/reddedildi eylemlerini otomatik olarak üretir. Üçünü de extraReducers içinde işleyin. Özel hata yükleri için rejectWithValue, thunk'lar içinde mevcut duruma erişmek için thunkAPI.getState() işlevini kullanın.

Sırada

Sonraki ders: **RTK Sorgusu: Uç Noktalar ve Otomatik Önbelleğe Alma** — createApi ile API uç noktaları tanımlayacak ve önbelleğe almayı otomatik olarak RTK Sorgusu'na yönettireceksiniz.

Sıkça Sorulan Sorular

“createAsyncThunk ile Asenkron Mantık” dersi ücretsiz mi?

Evet — “createAsyncThunk ile Asenkron Mantık” 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.

“createAsyncThunk ile Asenkron Mantık” dersinde ne öğreneceğim?

API çağrılarını Redux'ta createAsyncThunk ve pending/fulfilled/rejected yaşam döngüsüyle 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.

“createAsyncThunk ile Asenkron Mantık” 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

  1. Redux Toolkit Dilimleri ve createSlice
  2. createAsyncThunk ile Asenkron Mantık
  3. RTK Query: Uç Noktalar ve Otomatik Önbelleğe Alma
  4. İyimser Güncellemeler ve Önbellek Geçersiz Kılma
← React Academy Sayfasına Dön