0Pricing
Frontend Academy · Ders

Redux Toolkit: createSlice ve configureStore

createSlice ile durum dilimleri tanımlayın, bunları configureStore içinde birleştirin ve useDispatch ile useSelector kullanarak React bileşenlerinden eylemler gönderin.

Redux Toolkit: createSlice ve configureStore, CoddyKit'te ücretsiz bir Frontend Academy dersidir. Bu, 4 dersinin 1. 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.

Redux Toolkit Neden Kullanılır?

Redux Toolkit (RTK), Redux mantığı yazmanın resmî ve belirli kurallara dayanan yoludur. Yalın Redux'un tekrarlayan kodlarını ortadan kaldırır: elle eylem türü dizeleri yazmanız, uzun durum azaltıcılar oluşturmanız veya karmaşık store kurulumu yapmanız gerekmez.

Redux Toolkit'i Yükleme

Hem RTK'yi hem de React bağlayıcısını yükleyin.

npm install @reduxjs/toolkit react-redux

createSlice — Durum + Durum Azaltıcı + Eylemler

createSlice, tek bir çağrıyla bir durum dilimini, onun durum azaltıcısını ve eylem oluşturucularını oluşturur. Arka planda değişmez güncellemeler için Immer kullanır.

import { createSlice } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: { value: 0 },
  reducers: {
    increment: state => { state.value++; },     // Immer: mutate directly
    decrement: state => { state.value--; },
    reset: state => { state.value = 0; },
    incrementBy: (state, action) => { state.value += action.payload; }
  }
});

export const { increment, decrement, reset, incrementBy } = counterSlice.actions;
export default counterSlice.reducer;

configureStore — Store'u Birleştirme

configureStore, makul varsayılanlara sahip Redux store'unu oluşturur: Redux DevTools etkindir ve thunk ara yazılımı dahildir.

import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';
import cartReducer from './cartSlice';

export const store = configureStore({
  reducer: {
    counter: counterReducer,
    cart: cartReducer,
  }
});

// TypeScript types:
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;

Store Sağlama

Uygulamanızı react-redux'ten gelen <Provider store={store}> ile sarın.

import { Provider } from 'react-redux';
import { store } from './store';

ReactDOM.createRoot(document.getElementById('root')!).render(
  <Provider store={store}>
    <App />
  </Provider>
);

useSelector — Durumu Okuma

useSelector(selector), store'dan okur. Seçilen durum dilimi değiştiğinde bileşeni yeniden işler.

import { useSelector } from 'react-redux';
import type { RootState } from './store';

function Counter() {
  const count = useSelector((state: RootState) => state.counter.value);
  return <p>Count: {count}</p>;
}

useDispatch — Eylemleri Gönderme

useDispatch(), store'un dispatch işlevini döndürür. Durum değişikliğini tetiklemek için bunu bir eylem oluşturucuyla çağırın.

import { useDispatch } from 'react-redux';
import { increment, incrementBy } from './counterSlice';

function Controls() {
  const dispatch = useDispatch();
  return (
    <div>
      <button onClick={() => dispatch(increment())}>+1</button>
      <button onClick={() => dispatch(incrementBy(5))}>+5</button>
    </div>
  );
}

createAsyncThunk — Asenkron Eylemler

RTK'nin createAsyncThunk işlevi, asenkron işlemleri (API çağrılarını) yönetir ve beklemede/tamamlandı/reddedildi eylemlerini otomatik olarak gönderir.

import { createAsyncThunk } from '@reduxjs/toolkit';

export const fetchUser = createAsyncThunk(
  'user/fetchById',
  async (userId: string) => {
    const res = await fetch(`/api/users/${userId}`);
    return res.json(); // becomes action.payload on fulfilled
  }
);

// In slice:
extraReducers: (builder) => {
  builder
    .addCase(fetchUser.pending, state => { state.loading = true; })
    .addCase(fetchUser.fulfilled, (state, action) => {
      state.loading = false;
      state.user = action.payload;
    });
}

RTK Query — Yerleşik Veri Çekme

RTK Query (RTK'nin bir parçası), otomatik veri çekme, önbelleğe alma ve geçersizleştirme sağlar. API uç noktalarını tanımlayın ve oluşturulan kancaları alın.

import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';

export const api = createApi({
  baseQuery: fetchBaseQuery({ baseUrl: '/api' }),
  endpoints: (build) => ({
    getUsers: build.query<User[], void>({ query: () => 'users' }),
  })
});

// Generated hook:
const { data, isLoading, error } = api.useGetUsersQuery();

Durum Azaltıcılarda Immer

RTK, dahili olarak Immer kullandığından dilim durum azaltıcıları durumu doğrudan değiştirebilir. Immer, değişiklikleri algılar ve yeni, değişmez bir durum nesnesi üretir — değiştirmenin kullanım kolaylığını değişmezliğin güvenliğiyle birleştirirsiniz.

Redux DevTools

Redux DevTools tarayıcı eklentisi, gönderilen her eylemi ve bunun sonucunda oluşan durumu incelemenize, hatta zamanda geriye gitmenize olanak tanır: önceki herhangi bir duruma geçebilirsiniz. Karmaşık durum akışlarında hata ayıklamak için vazgeçilmezdir.

Hızlı Kontrol

Redux Toolkit'teki createSlice hangi öğeleri otomatik olarak oluşturur?

Özet: Redux Toolkit

createSlice, tek bir tanımda durum azaltıcıyı ve eylemleri birleştirir. Immer, durumu güvenle değiştirmenizi sağlar. configureStore, durum azaltıcıları DevTools ve thunk ile bir araya getirir. useSelector durumu okur. useDispatch eylemleri gönderir. createAsyncThunk asenkron akışlar içindir. RTK Query, önbelleğe almayla birlikte kapsamlı veri çekme olanağı sunar.

Sıkça Sorulan Sorular

“Redux Toolkit: createSlice ve configureStore” dersi ücretsiz mi?

Evet — “Redux Toolkit: createSlice ve configureStore” 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.

“Redux Toolkit: createSlice ve configureStore” dersinde ne öğreneceğim?

createSlice ile durum dilimleri tanımlayın, bunları configureStore içinde birleştirin ve useDispatch ile useSelector kullanarak React bileşenlerinden eylemler gönderin. 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 1. dersidir.

“Redux Toolkit: createSlice ve configureStore” 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. Redux Toolkit: createSlice ve configureStore
  2. Hafif React Durumu için Zustand
  3. Vue için Pinia: defineStore ve storeToRefs
  4. Genel ve Yerel Durum Ne Zaman Kullanılır
← Frontend Academy Sayfasına Dön