React Academy · Ders

Yeniden Oluşturmaları Sınırlamak için Context'leri Bölme

Sık değişen değerleri, sabit değerlerden ayırarak farklı context'lere yerleştirin.

1. ders / 413 adım

Yeniden Oluşturmaları Sınırlamak için Context'leri Bölme, CoddyKit'te ücretsiz bir React 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, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.

Hoş Geldiniz

Bu derste, Context değerinin yalnızca bir bölümü değiştiğinde gereksiz yeniden oluşturmaları azaltmak için React Context'lerini ayrı sağlayıcılara ayırmayı öğreneceksiniz.

Context'teki Yeniden Oluşturma Sorunu

useContext(MyCtx) çağrısını yapan her bileşen, context değerinin ANY bölümü değiştiğinde yeniden oluşturulur; kullandığı bölüm değişmemiş olsa bile. Tek ve büyük bir context, çok sayıda gereksiz yeniden oluşturmaya neden olabilir.

Güncelleme Sıklığına Göre Ayırma

Sık değişen değerleri nadiren değişenlerden ayırın. Her grubu kendi context'ine yerleştirin. Tüketiciler yalnızca ihtiyaç duydukları context'e abone olur.
const ThemeCtx = createContext('light');
const UserCtx = createContext(null);
// theme changes rarely; user changes on login/logout — same frequency is fine
// but notifCount changes every second — split it out!

Veri ve Gönderim Context'lerini Ayırma

Yaygın bir düzen, bir context'i durum verileri için (her değişiklikte yeniden oluşturulur), diğerini ise gönderim/ayarlayıcı işlevleri için (kararlı olduğu için tüketicileri asla yeniden oluşturmaz) kullanarak ayırmaktır. Yalnızca gönderimi kullanan tüketiciler, veri değişikliklerinde yeniden oluşturulmaz.
const CountCtx = createContext(0);
const SetCountCtx = createContext(() => {});

function Provider({ children }) {
  const [count, setCount] = useState(0);
  return (
    <CountCtx.Provider value={count}>
      <SetCountCtx.Provider value={setCount}>
        {children}
      </SetCountCtx.Provider>
    </CountCtx.Provider>
  );
}

Gönderim Context'ini Önbelleğe Alma

useState'ten gelen ayarlayıcılar kararlıdır (her yeniden oluşturmada aynı başvuruyu kullanır), bu nedenle gönderim context'inin değeri değişmez. Ancak bir actions nesnesi oluşturuyorsanız onu useMemo ile sarın.
const actions = useMemo(() => ({
  increment: () => setCount(c => c + 1),
  reset: () => setCount(0),
}), []); // stable — empty deps

İç İçe Sağlayıcılar

Bileşen ağacında birden çok sağlayıcıyı iç içe yerleştirin. Tüketiciler yalnızca ihtiyaç duydukları belirli context'i içe aktarır ve kullanır; böylece abonelikler dar kapsamlı kalır.
function App() {
  return (
    <AuthProvider>
      <ThemeProvider>
        <NotificationsProvider>
          <Router />
        </NotificationsProvider>
      </ThemeProvider>
    </AuthProvider>
  );
}

Ayırmadan Önce Profil Oluşturma

Context'leri ayırmadan önce her zaman React DevTools ile profil oluşturun. Gereksiz yeniden oluşturmalar yalnızca maliyetliyse sorundur. Yeniden oluşturulması hızlı olan context'leri gereğinden fazla karmaşıklaştırmayın.

Context'leri Ayırmanın Ödünleşimleri

Daha fazla context, bileşen ağacında daha fazla sağlayıcı anlamına gelir. Bu durum bilişsel yükü artırır. Ayırmayı önceden yapmak yerine yalnızca profil oluşturma bir performans sorunu gösterdiğinde ayırın.

React.memo ile Birleştirme

Tek bir context kullansanız bile maliyetli alt bileşenleri React.memo ile sarmalamak, bunların yalnızca özellikleri değiştiğinde yeniden oluşturulmasını sağlar; context değiştiğinde değil. Bu, ayırmaya göre daha basit bir seçenek olabilir.
const ExpensiveChild = React.memo(function({ label }) {
  return <div>{label}</div>;
}); // won't re-render on context change if label hasn't changed

useReducer + Context

Karmaşık durumları yönetmek için useReducer'ı context ile birlikte kullanın. Durumu bir context'te, gönderim işlevini başka bir context'te saklayın. Gönderim sabittir; durum her eylemde güncellenir.

Hızlı Kontrol

Durum ile gönderimi ayrı context'lere ayırmak performansı neden artırır?

Özet

Context'leri güncelleme sıklığına göre ayırın: sık değişen durumu bir context'te, kararlı gönderim/ayarlayıcıları başka bir context'te tutun. Önce profil oluşturun, yalnızca gerektiğinde ayırın ve daha basit bir seçenek olarak React.memo'yu değerlendirin.

Sırada

Sıradaki ders: **Context Değerlerini useMemo ile Önbelleğe Alma** — tüketicilerin değişmemiş veriler nedeniyle yeniden oluşturulmaması için context değeri nesnelerini useMemo ile saracaksınız.
Başlamak ücretsiz

Yapay zeka eğitmeniyle React öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
88
Dersler
324

Sıkça Sorulan Sorular

“Yeniden Oluşturmaları Sınırlamak için Context'leri Bölme” dersi ücretsiz mi?

Evet — “Yeniden Oluşturmaları Sınırlamak için Context'leri Bölme” 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 React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.

“Yeniden Oluşturmaları Sınırlamak için Context'leri Bölme” dersinde ne öğreneceğim?

Sık değişen değerleri, sabit değerlerden ayırarak farklı context'lere yerleştirin. React 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.

React Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te React 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.

“Yeniden Oluşturmaları Sınırlamak için Context'leri Bölme” 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 React Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her React 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. Yeniden Oluşturmaları Sınırlamak için Context'leri Bölme
  2. Context Değerlerini useMemo ile Önbelleğe Alma
  3. Context Seçici Deseni
  4. Context Ne Zaman Kullanılmamalı
← React Academy Sayfasına Dön