Takip et

React’te useContext ve useReducer ile Küresel Durum Yönetimi: Etkin Bir Kılavuz

React’te useContext ve useReducer ile Küresel Durum Yönetimi: Etkin Bir Kılavuz

React uygulamalarında küresel durumu yönetmek zorlu bir iş olabilir. Özellikle karmaşık uygulamalarda, bileşenler arasında veri alışverişi yapmak ve durumu güncellemek karmaşık hale gelebilir. Bu nedenle, React’te **useContext** ve **useReducer** hook’ları, küresel durumu etkili bir şekilde yönetmek için ideal çözümler sunar. Bu makalede, bu hook’ları nasıl kullanacağınızı ve uygulama geliştirme sürecinde size nasıl yardımcı olduklarını adım adım ele alacağız.

useContext: Global Duruma Kolay Erişimi Sağlamak

useContext, bir React bileşeninin **Context API** aracılığıyla küresel duruma erişmesini sağlar. Context API, uygulamanızın tamamı boyunca paylaşılabilen ve tüm bileşenlerden erişilebilen bir durum deposu oluşturmanıza olanak tanır. useContext hook’unu kullanmak için öncelikle bir Context oluşturmanız gerekir:

“`jsx
import React, { createContext, useContext } from ‘react’;

const ThemeContext = createContext(‘light’);

function ThemeProvider({ children }) {
const [theme, setTheme] = React.useState(‘light’);

return (

{children}

);
}

function MyComponent() {
const { theme, setTheme } = useContext(ThemeContext);

return (

Tema: {theme}

);
}

export default function App() {
return (



);
}
“`

Bu örnekte, **ThemeContext** adında bir Context oluşturduk ve **ThemeProvider** bileşeni aracılığıyla durumu sağlar. MyComponent bileşeni ise **useContext** hook’unu kullanarak **ThemeContext**’e erişir ve temayı güncellemek için **setTheme** fonksiyonunu kullanır.

useReducer: Karmaşık Durum Yönetimini Basitleştirmek

useReducer, karmaşık durum güncellemelerini yönetmek için bir yapı sağlar. useReducer, bir reducer fonksiyonu ve başlangıç durumu alarak, durum güncellemeleri için bir mekanizma oluşturur. Reducer fonksiyonu, mevcut durumu ve eylemi alır ve yeni durumu döndürür.

“`jsx
import React, { useReducer } from ‘react’;

const initialState = { count: 0 };

const reducer = (state, action) => {
switch (action.type) {
case ‘increment’:
return { count: state.count + 1 };
case ‘decrement’:
return { count: state.count – 1 };
default:
return state;
}
};

function Counter() {
const [state, dispatch] = useReducer(reducer, initialState);

return (

Sayı: {state.count}


);
}

export default Counter;
“`

Bu örnekte, **initialState** ile bir başlangıç durumu ve **reducer** fonksiyonu ile durum güncellemelerini yöneten bir reducer oluşturduk. **useReducer** hook’u, **state** ve **dispatch** fonksiyonunu döndürür. **dispatch** fonksiyonu, reducer fonksiyonunu çağırarak durum güncellemeleri için kullanılır.

useContext ve useReducer’ı Birlikte Kullanmak

useContext ve useReducer, birlikte kullanıldığında küresel durumu etkili bir şekilde yönetmek için güçlü bir kombinasyon oluştururlar. Örneğin, bir alışveriş sepetinin durumunu yönetmek için bu hook’ları birleştirebiliriz:

“`jsx
import React, { createContext, useContext, useReducer } from ‘react’;

const CartContext = createContext();

const initialState = { items: [] };

const reducer = (state, action) => {
switch (action.type) {
case ‘ADD_ITEM’:
return { items: […state.items, action.payload] };
case ‘REMOVE_ITEM’:
return {
items: state.items.filter((item) => item.id !== action.payload.id),
};
default:
return state;
}
};

function CartProvider({ children }) {
const [state, dispatch] = useReducer(reducer, initialState);

return (

{children}

);
}

function Cart() {
const { state, dispatch } = useContext(CartContext);

return (

{/* Alışveriş sepeti öğeleri gösterilir */}

{/* Alışveriş sepeti öğelerini silmek için düğmeler */}

);
}

function App() {
return (



);
}
“`

Bu örnekte, **CartContext** adında bir Context oluşturduk ve **CartProvider** bileşeni ile durumu sağladık. **useReducer** hook’unu kullanarak alışveriş sepetinin durumunu yönettik ve **useContext** hook’u ile **Cart** bileşeni bu duruma erişebiliyor.

Sonuç

useContext ve useReducer hook’ları, React uygulamalarında küresel durumu yönetmek için kullanışlı ve etkili araçlardır. useContext, global duruma erişimi basitleştirirken, useReducer karmaşık durum güncellemelerini yapılandırmanıza yardımcı olur. Bu hook’ları birleştirerek, React uygulamalarınızda küresel durumu yönetebilir ve karmaşık veri alışverişi sorunlarını çözebilirsiniz.

Daha Fazla Bilgi

Daha fazla bilgi edinmek için şu kaynakları inceleyebilirsiniz:

#Etiketler
React, useContext, useReducer, Küresel Durum, Context API, Durum Yönetimi, React Hook’ları, Uygulama Geliştirme

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.