0Pricing
React Academy · Ders

Temayı Kalıcı Kılma ve Parlamayı Önleme

Tema tercihini localStorage'a kaydedip tema ayarını React yüklenmeden önce yapmak için engelleyici bir betik ekleyin

Temayı Kalıcı Kılma ve Parlamayı Önleme, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 4. 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.

Yanlış Tema Parlaması Sorunu

Bir sayfa yüklendiğinde React, localStorage'ı okuyup doğru temayı uygulayabilmeden önce JavaScript'i indirmeli, ayrıştırmalı ve çalıştırmalıdır. Bu aralıkta tarayıcı, varsayılan stilleri kullanarak görüntü oluşturur. Kullanıcı koyu temayı tercih ediyor ancak varsayılanınız açık temaysa tema düzeltilmeden önce kısa süreli beyaz bir parlama görür.

Engelleyici Betik Çözümü

Çözüm, diğer kodlardan önce eşzamanlı olarak çalışan ve document head içine yerleştirilen satır içi bir betiktir. Bu betik localStorage'ı hemen okur ve document.documentElement üzerinde data-theme ayarlar. Engelleyici bir betik olduğundan tarayıcı, herhangi bir içeriği ekrana çizmeden önce özniteliği uygular.

Neden Engelleme Gereklidir

Eşzamansız veya ertelenmiş betikler, HTML ayrıştırıldıktan ve hatta ilk çizim yapıldıktan sonra çalışabilir. Bu da tüm amacın boşa çıkmasına neden olur. Engelleyici satır içi betikte async veya defer öznitelikleri bulunmamalı ve betik harici bir dosyadan yüklenmemelidir. Performans maliyetini en aza indirmek için betik çok küçük olmalıdır.

Satır İçi Betik İçeriği

Engelleyici betik olabildiğince küçüktür: localStorage.getItem('theme') ile okuyun, yedek olarak window.matchMedia('(prefers-color-scheme: dark)').matches değerini kontrol edin, ardından document.documentElement.setAttribute('data-theme', theme) çağrısını yapın. localStorage'ın gizli gezinmede kullanılamaması ihtimaline karşı betiği bir hata yakalama bloğuna sarın.

Next.js Uygulaması

Next.js'te, _document.js içinde next/script paketindeki Script bileşenini strategy="beforeInteractive" ile kullanın. beforeInteractive stratejisi, betiği sayfa JavaScript'i çalışmadan önce sayfanın HTML'sine ekler ve Next.js derleme işlem hattında aynı engelleyici davranışı sağlar.

Vite ve CRA Uygulaması

Bir Vite veya Create React Uygulaması projesinde index.html dosyasını doğrudan düzenleyin ve satır içi betik etiketini diğer tüm betiklerden önce head içine yerleştirin. index.html tarayıcının giriş noktası olduğundan betik React başlatılmadan önce çalışır. 100 baytın altında kalması için betiği kısa tutun.

Çerez veya Üst Bilgi ile SSR Çözümü

Sunucu tarafından oluşturulan bir uygulamada sunucu, istekle gönderilen bir çerezden temayı okuyabilir. Ardından tarayıcıya göndermeden önce oluşturulan HTML içinde data-theme ayarlar. Doğru tema HTML'nin ilk baytında bulunduğundan bu yaklaşım istemci tarafındaki parlamayı tamamen önler.

Parlamasız Tam Akış

Tam akış şöyledir: tarayıcı HTML'yi indirir, ayrıştırıcı engelleyici satır içi betikle karşılaşır, betik localStorage'ı okur ve data-theme ayarlar, ayrıştırıcı devam eder, sayfa doğru temayla çizilir, React hidratasyon gerçekleştirir ve localStorage'dan aynı temayı alır. Kullanıcı başlangıçtan itibaren tek ve tutarlı bir tema görür.

Parlama Önlemeyi Sınama

Düzeltmenin çalıştığını doğrulamak için Chrome DevTools'u açın, Ağ sekmesine gidin ve hızı Slow 3G'ye sınırlayın. Sayfayı yeniden yükleyin. Yükleme sırasında bir tema değişikliği görüyorsanız parlama giderilmemiştir. Engelleyici betik yerindeyse yavaş bağlantılarda bile ilk çizim doğru temayı göstermelidir.

Hidratasyon Uyuşmazlığı Riski

React'ın ilk durumu açık temayı varsayıyor ancak engelleyici betik hidratasyondan önce koyu temayı ayarlıyorsa React bir hidratasyon uyuşmazlığı uyarısı verebilir. Bunu önlemek için React tema durumunu ilk oluşturma sırasında localStorage'ı da okuyarak başlatın; böylece React tarafından oluşturulan HTML, engelleyici betiğin ayarladığı DOM durumuyla eşleşir.

Storybook ve Sınama Ortamlarında Parlama

Storybook ve sınama ortamları index.html dosyanızı yüklemez; bu nedenle engelleyici betik hiç çalışmaz. Bu ortamlarda varsayılan bir data-theme özniteliği uygulayan bir dekoratör veya sınama kurulumu sağlayın. Böylece bileşenleri yalıtılmış olarak geliştirirken oluşabilecek kafa karıştırıcı görsel tutarsızlıklar önlenir.

Yanlış Tema Parlamasını Önleme Tekniği

Yanlış tema parlamasını önlemek için belge başlığında ne tür bir betik kullanılmalıdır?

Ders Özeti: Temayı Kalıcı Kılma ve Parlamayı Önleme

Herhangi bir çizim yapılmadan önce localStorage'ı okuyan ve data-theme ayarlayan küçük bir satır içi engelleyici betiği belge başlığına ekleyerek yanlış tema parlamasını önleyin. Next.js'te strategy="beforeInteractive" kullanın; Vite/CRA'da bunu doğrudan index.html dosyasına ekleyin. SSR uygulamaları temayı sunucu tarafında ayarlamak için bir çerez okuyabilir.

Sıkça Sorulan Sorular

“Temayı Kalıcı Kılma ve Parlamayı Önleme” dersi ücretsiz mi?

Evet — “Temayı Kalıcı Kılma ve Parlamayı Önleme” 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.

“Temayı Kalıcı Kılma ve Parlamayı Önleme” dersinde ne öğreneceğim?

Tema tercihini localStorage'a kaydedip tema ayarını React yüklenmeden önce yapmak için engelleyici bir betik ekleyin 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 4. dersidir.

“Temayı Kalıcı Kılma ve Parlamayı Önleme” 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. Sistem Renk Şemasını Algılama
  2. Tema Değiştirme için CSS Değişkenleri
  3. Tema Durumu için React Context
  4. Temayı Kalıcı Kılma ve Parlamayı Önleme
← React Academy Sayfasına Dön