Redux - Nasıl Çalışır, Artıları ve Eksileri
Redux, JavaScript uygulamalarında merkezi bir state yönetim kütüphanesidir ve genellikle büyük ölçekli React projelerinde kullanılır. Redux'ta tüm uygulamanın durumu tek bir store'da tutulur. Uygulama durumu action adı verilen nesnelerle güncellenir ve bu işlemler reducer adı verilen saf fonksiyonlar tarafından işlenir. dispatch ile action'lar store'a gönderilir, böylece state güncellenir ve bileşenler yeniden render edilir.
Artıları arasında merkezi state yönetimi, tahmin edilebilirlik, DevTools desteği ve büyük projelerde ölçeklenebilirlik yer alır. Eksileri ise gereksiz karmaşıklık, öğrenme eğrisi ve yanlış kullanımda performans sorunları olarak sıralanabilir. Redux, büyük ve karmaşık projelerde faydalıdır, ancak her projede kullanılması gerekmeyebilir.
Redux’ın Temel Kavramları
-
Store: Redux’ta tüm uygulamanın durumunu tutan merkezi bir depo (store) vardır. Uygulamadaki tüm bileşenler bu store’dan durumu alır ve günceller.
-
Action: Action, store’daki durumu değiştirmek için kullanılan saf bir JavaScript nesnesidir. Bir
typealanı ve isteğe bağlı olarak bir payload (taşıyıcı) içerir.const incrementAction = { type: 'INCREMENT', payload: 1 }; -
Reducer: Reducer, bir action'a göre store'daki durumu güncelleyen saf bir fonksiyondur. Her reducer, belirli bir state dilimini yönetir.
const counterReducer = (state = 0, action) => { switch (action.type) { case 'INCREMENT': return state + action.payload; case 'DECREMENT': return state - action.payload; default: return state; } }; -
Dispatch: Dispatch, bir action'ı store'a göndermek için kullanılır. Dispatch edilen action, store'daki ilgili reducer’a iletilir ve durum güncellenir.
-
Selectors: State'teki belirli verilere erişmek için kullanılır. Selectors, store'dan veri çekmenin temiz ve yeniden kullanılabilir bir yoludur.
Redux’ın Çalışma Prensibi
Redux, tek yönlü veri akışı prensibiyle çalışır. Yani, veri aşağıdan yukarıya doğru akmaz. Redux veri akışı şu şekildedir:
- Action Dispatch: Bir bileşen ya da başka bir kaynaktan bir action dispatch edilir.
- Reducer: Bu action ilgili reducer tarafından işlenir ve yeni bir state oluşturulur.
- Store Güncellemesi: Reducer tarafından döndürülen yeni state, store'daki mevcut state'in yerini alır.
- Bileşen Güncellemesi: Store’daki state güncellendiğinde, bu state’e bağlı olan bileşenler de yeniden render edilir.
Örneklerle Redux
Adım 1: Redux Kurulumu
Öncelikle, Redux ve React-Redux kütüphanelerini projeye eklemek gerekiyor:
npm install redux react-redux
Adım 2: Store Oluşturma
import { createStore } from 'redux';
// Basit bir reducer oluşturuyoruz
const initialState = {
counter: 0
};
const counterReducer = (state = initialState, action) => {
switch (action.type) {
case 'INCREMENT':
return { ...state, counter: state.counter + 1 };
case 'DECREMENT':
return { ...state, counter: state.counter - 1 };
default:
return state;
}
};
// Store'u oluşturuyoruz
const store = createStore(counterReducer);
Adım 3: Bileşenlerde Kullanım
Redux store'u bileşenlerde kullanmak için Provider bileşeni ve useSelector, useDispatch hook'ları kullanılır.
import React from 'react';
import { Provider, useSelector, useDispatch } from 'react-redux';
import { createStore } from 'redux';
// Daha önce oluşturduğumuz reducer ve store
const store = createStore(counterReducer);
const CounterComponent = () => {
const counter = useSelector(state => state.counter);
const dispatch = useDispatch();
return (
<div>
<h1>Counter: {counter}</h1>
<button onClick={() => dispatch({ type: 'INCREMENT' })}>Increment</button>
<button onClick={() => dispatch({ type: 'DECREMENT' })}>Decrement</button>
</div>
);
};
function App() {
return (
<Provider store={store}>
<CounterComponent />
</Provider>
);
}
export default App;
Redux’ın Artıları ve Eksileri
Artıları:
- Merkezi State Yönetimi: Uygulamanın durumu merkezi bir store’da toplandığı için, hangi bileşenin hangi state verisini kullandığı kolayca takip edilebilir.
- Tahmin Edilebilirlik: Redux’un saf fonksiyonlar (reducers) kullanması ve tek yönlü veri akışı, uygulama davranışını tahmin edilebilir kılar.
- DevTools Desteği: Redux DevTools ile state ve action'ları zaman içerisinde izlemek ve hata ayıklamak kolaydır.
- Büyük Uygulamalarda Ölçeklenebilirlik: Özellikle büyük ölçekli projelerde, state yönetimini daha düzenli ve kontrol edilebilir hale getirir.
Eksileri:
- Karmaşıklık: Redux, küçük projelerde gereksiz bir karmaşıklık yaratabilir. Her action ve state değişikliği için çok fazla boilerplate kod yazmak gerekebilir.
- Öğrenme Eğrisi: Redux’ın yapısı ve felsefesi, özellikle yeni başlayanlar için öğrenmesi zor olabilir.
- Verimlilik Sorunları: Yanlış kullanıldığında, gereksiz render işlemlerine yol açabilir ve performans sorunlarına neden olabilir.
Redux, özellikle büyük ve karmaşık uygulamalarda state yönetimini kontrol altına almak için güçlü bir araçtır. Ancak, her projede kullanılması gerektiği anlamına gelmez. Projenin ölçeği ve karmaşıklığına göre, Redux’ın kullanılıp kullanılmayacağına karar vermek önemlidir.
Redux Toolkit Nedir? Öğrenmek için tıklayın.
Alakalı İçerikler
-
React Server Bileşenlerinde Kritik Güvenlik Açığı: CVE-2025-55182 (Next.js: CVE-2025-66478) 8 Ay önce
Modern web geliştirme dünyası son yıllarda büyük bir dönüşüm geçiriyor. Bu dönüşümün merkezinde ise React Server Components (RSC) yer alıyor. Ancak Aralık 2025’te açıklanan CVE-2025-55182 ve ona bağlı Next.js güvenlik açığı...
-
React + Laravel Sanctum + MySQL ile Modern Web Uygulamaları Geliştirme 11 Ay önce
Günümüzde web uygulamaları sadece basit sayfalar sunmakla kalmıyor; gerçek zamanlı veri işleme, kullanıcı oturumu yönetimi, güvenlik ve ölçeklenebilirlik gibi birçok ihtiyacı karşılıyor.
-
Vue 3 ve React Karşılaştırma - Kolay ve Zor Yanları 1 Yıl önce
JavaScript dünyasında kullanıcı ara yüzü oluşturmak için en popüler kütüphaneler arasında Vue 3 ve React yer alır. İkisi de bileşen tabanlı yaklaşımları ve modern özellikleriyle öne çıkar. Ancak Vue 3 ve React, farklı felsefeler ve kullanım alanlarına sahiptir.
-
Redux Toolkit Nedir? 2 Yıl önce
Redux Toolkit'te slice, belirli bir state dilimi için action'ları, reducer'ları ve başlangıç durumunu tek bir yapı altında toplar. Redux'ta state yönetimini daha organize ve kolay hale getirir.
-
SEO Tabanlı React Projeleri İçin En İyi Framework - Next.js, Remix, Gatsby ve Expo Karşılaştırması 2 Yıl önce
SEO odaklı bir React projesi geliştirmek için Next.js en uygun seçenektir, çünkü sunucu tarafında render (SSR) ve statik site üretimi (SSG) desteği sunarak optimal performans ve SEO dostu bir çözüm sağlar.
-
Redux'un Next.js ile kullanılıp kullanılmayacağına karar vermek için kapsamlı bir kılavuz 2 Yıl önce
Redux, JavaScript uygulamalarınızın durumunu verimli bir şekilde yönetmenize olanak tanıyan güçlü bir durum yönetimi kitaplığıdır. Next.js ise sunucu tarafında oluşturulan uygulamalar oluşturmaya yönelik popüler bir React çerçevesidir.
- React
Tepkini Göster
- 4
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
Yorumlar
Sende Yorumunu Ekle