0Pricing
React Academy · Ders

Context Değerlerini useMemo ile Önbelleğe Alma

Tüketicilerin gereksiz yere yeniden oluşturulmasını önlemek için context değer nesnelerini useMemo ile sarın.

Context Değerlerini useMemo ile Önbelleğe Alma, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 2. 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ğeri nesnelerinin neden useMemo ile önbelleğe alınması gerektiğini ve gereksiz yeniden oluşturmaları önlemek için bağımlılıkların nasıl doğru ayarlanacağını öğreneceksiniz.

Nesne Başvurusu Sorunu

Bir Provider bileşeni her yeniden oluşturulduğunda, içerikleri aynı olsa bile context değeri olarak yeni bir nesne sabiti `{ ... }` oluşturulur. Başvuru değiştiği için tüm tüketiciler yeniden oluşturulur.
// Every render creates a new object!
<UserCtx.Provider value={{ user, logout }}>
  {children}
</UserCtx.Provider>

useMemo ile Düzeltme

Context değerini useMemo ile sarın; böylece bağımlılık dizisindeki hiçbir şey değişmediğinde yeniden oluşturmalar arasında aynı nesne başvurusu döndürülür.
const value = useMemo(
  () => ({ user, logout }),
  [user, logout]
);

<UserCtx.Provider value={value}>
  {children}
</UserCtx.Provider>

Bağımlılıkları Dikkatle Seçme

useMemo içinde kullanılan her değeri bağımlılık dizisine ekleyin. Eksik bağımlılıklar güncel olmayan değerlere neden olur. İlkel özellikleri (metinler, sayılar) ve kararlı başvuruları (useCallback ile sarılmış işlevleri) ekleyin.

useCallback ile Kararlı İşlevler

İşlev değerleri her yeniden oluşturmada başvuru değiştirir. Gereksiz yeniden oluşturmaları önlemek için bir useMemo context değerine eklemeden önce bunları useCallback ile sarın.
const logout = useCallback(() => {
  clearSession();
  setUser(null);
}, []);

const value = useMemo(() => ({ user, logout }), [user, logout]);

Önbelleğe Almanın Gereksiz Olduğu Durumlar

Provider bileşeni hiç yeniden oluşturulmuyorsa (örneğin ağacın en üstündeyse ve üst öğesi hiç değişmiyorsa) useMemo herhangi bir yarar sağlamadan ek yük getirir. Yalnızca Provider'ın kendisi yeniden oluşturuluyorsa önbelleğe alın.

İlkel Değerler Zaten Kararlıdır

Context değeriniz ilkel bir değerse (metin, sayı, doğru/yanlış), useMemo kullanmanız NOT gerekmez; ilkel değerler başvuruya göre değil, değere göre karşılaştırılır. `value={isDark}` ek yeniden oluşturmaya neden olmaz.
// No useMemo needed for primitives
<ThemeCtx.Provider value={isDark ? 'dark' : 'light'}>
  {children}
</ThemeCtx.Provider>

Önbelleğe Almanın Etkisini Profil Oluşturmayla İnceleme

Context değerini useMemo ile sarmalamanın gerçekten yeniden oluşturmaları azaltıp azaltmadığını doğrulamak için React DevTools Profil Oluşturucusu'nu kullanın. Farkı görmek için bir oturumu önce ve sonra kaydedin ve tamamlanma sayılarını karşılaştırın.

İç İçe Önbelleğe Alınmış Context'ler

Birden çok context iç içe olduğunda her birini bağımsız olarak önbelleğe alın. Bir context'teki değişiklikler diğerinin önbelleğe alınmış değerini etkilemez.

Provider Bileşeni Düzeni

Context'i, durumu ve önbelleğe alma işlemini özel bir Provider bileşeninin içinde kapsülleyin. Context'i tüketmek için özel bir kanca dışa aktarın. Bu, yeniden kullanılabilir context'ler için standart düzendir.
export function UserProvider({ children }) {
  const [user, setUser] = useState(null);
  const logout = useCallback(() => setUser(null), []);
  const value = useMemo(() => ({ user, logout }), [user, logout]);
  return <UserCtx.Provider value={value}>{children}</UserCtx.Provider>;
}

export const useUser = () => useContext(UserCtx);

Hızlı Kontrol

Bir context değeri nesnesini useMemo ile sarmalamanın temel nedeni nedir?

Özet

Context değeri nesnelerini doğru bağımlılıklarla useMemo içinde sarın. İşlev değerlerini useCallback ile kararlı hâle getirin. İlkel değerlerin önbelleğe alınması gerekmez. Context kurulumunu özel bir kancaya sahip bir Provider bileşeninde kapsülleyin.

Sırada

Sıradaki ders: **Context Seçici Düzeni** — yalnızca belirli bir context parçası değiştiğinde tüketicileri yeniden oluşturan bir seçici kancası uygulayacaksınız.

Sıkça Sorulan Sorular

“Context Değerlerini useMemo ile Önbelleğe Alma” dersi ücretsiz mi?

Evet — “Context Değerlerini useMemo ile Önbelleğe Alma” 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.

“Context Değerlerini useMemo ile Önbelleğe Alma” dersinde ne öğreneceğim?

Tüketicilerin gereksiz yere yeniden oluşturulmasını önlemek için context değer nesnelerini useMemo ile sarın. 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 2. dersidir.

“Context Değerlerini useMemo ile Önbelleğe Alma” 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