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-reduxcreateSlice — 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
- Redux Toolkit: createSlice ve configureStore
- Hafif React Durumu için Zustand
- Vue için Pinia: defineStore ve storeToRefs
- Genel ve Yerel Durum Ne Zaman Kullanılır