avatar
·4 dk okuma
React State Yönetimi: Kavramlar, Araçlar ve İyi Uygulamalar

React State Yönetimi: Kavramlar, Araçlar ve İyi Uygulamalar

React, kullanıcı arayüzü geliştirme için popüler ve güçlü bir JavaScript kütüphanesidir. Birçok uygulamada, uygulamanın durumunu yönetmek ve bileşenler arasında veri akışını kontrol etmek önemlidir. Bu yazıda, React'ta state yönetiminin temel kavramlarına, mevcut araçlara ve iyi uygulamalara değineceğiz.

State Yönetimi Nedir?

State yönetimi, bir uygulamanın durumunu (bileşenlerin mevcut verileri ve UI durumu) kontrol etmeyi ve yönetmeyi ifade eder. Başarılı bir state yönetimi, bileşenlerin ihtiyaç duydukları verilere erişebilmelerini ve güncellemelerin doğru şekilde yansıtılmasını sağlar.

Local State ve Global State

React'ta iki tür state vardır: local state ve global state.

Local state, bir bileşenin kendi içindeki verileri ve durumu temsil eder. Bu tür state, sadece ilgili bileşen tarafından yönetilir ve diğer bileşenlerle paylaşılmaz.

Global state ise uygulamanın birden fazla bileşeni tarafından paylaşılan ve yönetilen verileri temsil eder. Genellikle, global state'in yönetimi ve güncellemesi için ek araçlara ihtiyaç duyulur.

React'ta State Yönetimi Araçları

React ekosistemi, state yönetimi için çeşitli araçlar sunar. İşte bunlardan bazıları:

  1. React Context API: React'in kendi içinde bulunan ve global state yönetimi için kullanılan bir araçtır. Context API, bir üst bileşende değerlerin sağlanması ve alt bileşenlerde değerlerin kullanılması için sağlamaktadır.

    import React, { createContext, useContext, useState } from 'react';
    
    const AppContext = createContext();
    
    export const useAppContext = () => useContext(AppContext);
    
    export const AppProvider = ({ children }) => {
      const [appState, setAppState] = useState({});
    
      return (
        <AppContext.Provider value={{ appState, setAppState }}>
          {children}
        </AppContext.Provider>
      );
    };
    
  2. Redux: React uygulamalarında genellikle kullanılan bir state yönetim kütüphanesidir. Redux, uygulama durumunu tek bir "store"da merkezi bir şekilde yönetmeye olanak tanır. Redux, aksiyonlar ve redüktörler kullanarak state güncellemelerini yönetir ve ön görülebilir bir şekilde çalışır.

  3. MobX: MobX, gözlemleyiciler ve hareketlerle çalışan başka bir state yönetim kütüphanesidir. MobX, state değişikliklerinin otomatik olarak takip edilmesine ve ilgili bileşenlerin yeniden render edilmesine olanak tanır. Bu, daha az kod yazmayı ve daha hızlı geliştirmeyi sağlar.

    import { makeAutoObservable } from 'mobx';
    import { observer } from 'mobx-react-lite';
    
    class AppState {
      count = 0;
    
      constructor() {
        makeAutoObservable(this);
      }
    
      increment() {
        this.count += 1;
      }
    
      decrement() {
        this.count -= 1;
      }
    }
    
    const appState = new AppState();
    
    const Counter = observer(() => {
      const { count, increment, decrement } = appState;
    
      return (
        <div>
          <h2>Count: {count}</h2>
          <button onClick={increment}>+</button>
          <button onClick={decrement}>-</button>
        </div>
      );
    });
    
    export default Counter;
  4. Recoil: Facebook tarafından geliştirilen ve atomlar ve seçicilerle çalışan modern bir state yönetim kütüphanesidir. Recoil, geliştiricilere daha ince taneli ve modüler bir state yönetimi sunar ve performans odaklıdır.

    import { atom, selector, useRecoilState, useRecoilValue } from 'recoil';
    
    const counterState = atom({
      key: 'counterState',
      default: 0
    });
    
    const counterDisplayState = selector({
      key: 'counterDisplayState',
      get: ({ get }) => `Count: ${get(counterState)}`
    });
    
    const Counter = () => {
      const [count, setCount] = useRecoilState(counterState);
      const display = useRecoilValue(counterDisplayState);
    
      return (
        <div>
          <h2>{display}</h2>
          <button onClick={() => setCount(count + 1)}>+</button>
          <button onClick={() => setCount(count - 1)}>-</button>
        </div>
      );
    };
    
    export default Counter;

    İyi Uygulamalar

    React'ta state yönetimi için bazı iyi uygulamalar şunlardır:

    1. Basit tutun: İlk başta, yerel state ve React Context API kullanarak işe başlayın. Daha karmaşık ve büyük ölçekli durumlar için Redux veya MobX gibi ek araçlara geçiş yapabilirsiniz.

    2. Tek yönlü veri akışı: Veri akışını yönetmek için tek yönlü veri akışı sağlayın. Bu, verilerin bileşenler arasında kolayca takip edilebilmesine ve güncellemelerin doğru şekilde yansıtılmasına yardımcı olur.

    3. State'i azaltın: Uygulamanızın performansını artırmak ve karmaşıklığı azaltmak için gereksiz state kullanımından kaçının. State'i sadece gerçekten gerekli olduğunda kullanın ve bunun yerine prop'ları kullanarak bileşenler arasında veri aktarın.

    4. Bileşenleri küçük tutun: Küçük ve odaklı bileşenler oluşturarak, state yönetiminin daha kolay ve anlaşılabilir olmasını sağlayın. Bu, bileşenlerin yeniden kullanılabilirliğini artırır ve bakımını kolaylaştırır.

    5. Testler yazın: Uygulamanızın state yönetimini güvenilir bir şekilde sağlamak için testler yazın. Bu, uygulamanızın istikrarını ve kalitesini artıracaktır.

    Sonuç olarak, React'ta state yönetimi önemli bir konudur ve doğru araçlar ve uygulamalar kullanarak, uygulamanızın performansını, ölçeklenebilirliğini ve bakımını önemli ölçüde geliştirebilirsiniz. Başarıya giden yolda bu iyi uygulamaları benimseyerek ve doğru araçları seçerek başlayın.