0Pricing
React Academy · Ders

Saf Bileşenler ve Oluşturma Sırasında Yan Etkilerden Kaçınma

Değişikliklerden ve dış okumalarından arındırılmış oluşturma işlevleri yazın.

Saf Bileşenler ve Oluşturma Sırasında Yan Etkilerden Kaçınma, 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 React'te saf bileşenin ne anlama geldiğini, render işlevlerinin neden yan etkilerden arındırılması gerektiğini ve yaygın saflık ihlallerini nasıl bulup düzelteceğinizi öğreneceksiniz.

Saf İşlev Nedir

Saf bir işlev, aynı girdiler için her zaman aynı çıktıyı döndürür ve gözlemlenebilir hiçbir yan etkiye neden olmaz. React, bileşen işlevinizin saf olmasını bekler: aynı özellikler ve durum verildiğinde her zaman aynı JSX'i döndürmelidir.

React'te Saflık Neden Önemlidir

React, bileşeninizi birden çok kez çağırabilir (StrictMode, eşzamanlı özellikler ve sunucu tarafında oluşturma). Render işleminizde API çağrıları, DOM değişiklikleri veya global değişkenlere yazma gibi yan etkiler varsa bu etkiler öngörülemeyen biçimde birden çok kez çalışır.

Yaygın Saflık İhlali: Harici Durumu Değiştirme

Render sırasında bileşenin dışında tanımlanan değişkenleri asla değiştirmeyin. Değişiklik yapmak olay işleyicilerinin veya useEffect'in içinde uygundur, ancak render zamanında uygun değildir.
let totalRenders = 0; // external
function Counter() {
  totalRenders++; // BAD: side effect in render
  return <p>{totalRenders}</p>;
}

Yaygın Saflık İhlali: Özellikleri Değiştirme

Bir bileşenin içinde özellikler nesnesini asla değiştirmeyin. Özellikler salt okunurdur. Değiştirilmiş bir sürüme ihtiyacınız varsa yeni bir değişken oluşturun.
// Bad
function Badge({ user }) {
  user.name = user.name.toUpperCase(); // mutates prop!
  return <p>{user.name}</p>;
}

// Good
function Badge({ user }) {
  const displayName = user.name.toUpperCase();
  return <p>{displayName}</p>;
}

Yaygın Saflık İhlali: Render Sırasında Rastgele Değer veya Tarih Kullanma

Render içinde doğrudan `Math.random()` veya `Date.now()` çağırmak, her çağrıda farklı değerler üretir ve saflığı bozar. Bunları durum başlatıcılarına veya useEffect içine taşıyın.
// Bad
function Token() {
  const id = Math.random(); // different every render!
  return <p>{id}</p>;
}

// Good
function Token() {
  const [id] = useState(() => Math.random());
  return <p>{id}</p>;
}

API Çağrıları useEffect İçinde Yapılmalıdır

Verileri doğrudan bileşen işlevinin gövdesi içinde almak (useEffect içinde almamak) bir saflık ihlalidir — her render işleminde tetiklenir. Veri alma çağrılarını her zaman uygun bağımlılıklarla birlikte useEffect içine taşıyın.
// Bad
function Profile({ id }) {
  fetch('/api/user/' + id); // runs on every render!
  return <div />;
}

// Good
useEffect(() => {
  fetch('/api/user/' + id).then(/*...*/);
}, [id]);

Yerel Değişiklikler Uygundur

Aynı render çağrısı içinde oluşturulan nesneleri veya dizileri oluşturmak ve değiştirmek tamamen uygundur — başka hiç kimse bunları gözlemleyemez. Buna yerel değişiklik denir.
function List({ items }) {
  const sorted = [...items]; // new array
  sorted.sort();             // mutating a local copy: OK
  return sorted.map(i => <li key={i}>{i}</li>);
}

Saflık İhlallerini Bulmak İçin Strict Mode Kullanma

React StrictMode, bileşeninizi geliştirme ortamında iki kez çağırır. İki çağrı arasında kullanıcı arayüzünüz tutarsızsa veya yinelenen yan etkiler görüyorsanız render işleminiz saf değildir. İki kez çağırmanın zararsız olmasını sağlayana kadar saflık ihlalini düzeltin.

Pure Bileşenler ve React.memo

Bir bileşen saf olduğunda (aynı özellikler → aynı çıktı), onu `React.memo` ile sarmalamak React'e özellikler değişmediyse yeniden render işlemini atlayabileceğini söyler ve performansı artırır.
const Pure = React.memo(function Pure({ value }) {
  return <p>{value}</p>;
});

Hızlı Kontrol

Aşağıdakilerden hangisi bir React bileşeninin render işlevi içinde doğrudan gerçekleştirilebilecek kabul edilebilir bir yan etkidir?

Özet

Saf bileşenler aynı girdiler için her zaman aynı JSX'i döndürür. Render sırasında özellikleri veya harici değişkenleri değiştirmekten kaçının, yan etkiler için useEffect kullanın ve ihlalleri yakalamak için StrictMode'a güvenin.

Sırada

Sonraki ders: **Anahtar ve Referans En İyi Uygulamaları** — kararlı anahtarları doğru şekilde kullanacak, indeksin anahtar olarak kullanılması sorunundan kaçınacak ve geri çağırma referanslarıyla çalışacaksınız.

Sıkça Sorulan Sorular

“Saf Bileşenler ve Oluşturma Sırasında Yan Etkilerden Kaçınma” dersi ücretsiz mi?

Evet — “Saf Bileşenler ve Oluşturma Sırasında Yan Etkilerden Kaçınma” 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.

“Saf Bileşenler ve Oluşturma Sırasında Yan Etkilerden Kaçınma” dersinde ne öğreneceğim?

Değişikliklerden ve dış okumalarından arındırılmış oluşturma işlevleri yazı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.

“Saf Bileşenler ve Oluşturma Sırasında Yan Etkilerden Kaçınma” 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. StrictMode Ne Yapar
  2. Saf Bileşenler ve Oluşturma Sırasında Yan Etkilerden Kaçınma
  3. Key ve Ref için En İyi Uygulamalar
  4. Klasör Yapısı ve Adlandırma Kuralları
← React Academy Sayfasına Dön