useAtom ile Atomları Okuma ve Yazma
Bileşen ağacının farklı yerlerindeki atomları okumak ve güncellemek için useAtom, useAtomValue ve useSetAtom kullanın
useAtom ile Atomları Okuma ve Yazma, 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.
useAtom: Birincil Kanca
useAtom(someAtom), useState API'sini yansıtarak [value, setter] döndürür. value, atomun geçerli durumudur; setter ise onu günceller. Bir bileşen atomu hem okuyor hem de yazıyorsa bunu kullanın.
setter, yeni bir değeri veya güncelleyici bir işlevi kabul eder: setCount(c => c + 1).
useAtomValue: Salt Okuma Erişimi
useAtomValue(someAtom), setter olmadan yalnızca geçerli değeri döndürür. Bunu, durumu okuyup hiçbir zaman değiştirmeyen yalnızca görüntüleme yapan bileşenlerde kullanın.
Bileşen bir setter başvurusu tutmadığından, amaç kodda açıkça belgelenir: Bu bileşen yalnızca okuma yapar.
useSetAtom: Salt Yazma Erişimi
useSetAtom(someAtom), yalnızca setter işlevini döndürür. En önemlisi, bileşeni atomun değerine abone etmez. Atom değiştiğinde bileşen hiçbir zaman yeniden oluşturulmaz.
Bunu, durum değişikliklerini gönderen ancak türetilmiş bir kullanıcı arayüzü göstermeyen düğmeler gibi yalnızca eylem gerçekleştiren bileşenlerde kullanın.
Performans Açısından useSetAtom Neden Önemlidir
Bir sayacı artırmak için useSetAtom(countAtom) çağıran bileşen, değer aboneliği olmadığı için countAtom değiştiğinde hiçbir zaman yeniden oluşturulmaz. Yalnızca sayacı görüntüleyen bileşen yeniden oluşturulur.
Bu, basit ama güçlü bir iyileştirmedir: Zincirleme yeniden oluşturmaları önlemek için yazanları okuyanlardan ayırın.
Kalıcı Depolama için atomWithStorage
atomWithStorage'ı jotai/utils içinden içe aktarın. Bunu atom() ile tamamen aynı şekilde kullanın; ancak ilk bağımsız değişken olarak bir depolama anahtarı verin: atomWithStorage('theme', 'light'). Atom, localStorage ile otomatik olarak eşitlenir.
Sayfa yeniden yüklendiğinde atom, localStorage içinden başlatılır. Atomu okuyan tüm bileşenler kalıcı olarak saklanan değeri hemen alır.
atomWithStorage'ı Sıfırlama
jotai/utils içindeki RESET simgesi, bir atomWithStorage atomunun setter işlevine aktarılabilir: setter(RESET). Bu işlem localStorage girdisini temizler ve atomu başlangıç değerine sıfırlar.
Bu özellik, oturum kapatma akışları veya ayarlar sayfalarındaki "varsayılanlara sıfırla" düğmeleri için kullanışlıdır.
atomFamily ile Atom Aileleri
jotai/utils içindeki atomFamily, parametreli bir atom döndüren bir fabrika oluşturur. Örneğin atomFamily(id => atom(null)), aktarılan her benzersiz id için ayrı bir atom oluşturur.
Bu yaklaşım, tek bir büyük eşleme atomunu yönetmeden selectedAtom(itemId) veya expandedAtom(rowId) gibi öğe başına durumlar için idealdir.
Atom Ailesi Temizleme
Kimlikler biriktikçe atom aileleri sınırsız biçimde büyüyebilir. Jotai'nin kullanım süresi dolmuş aile üyelerini kaldırıp kaldırmayacağına karar verirken çağıracağı bir temizleme koşulu tanımlamak için atomFamily.setShouldRemove((createdAt, param) => ...) kullanın.
Öğelerin eklendiği ve kaldırıldığı listelerde, bellek sızıntılarını önlemek için öğeler silindiğinde atom ailesi girdilerini her zaman temizleyin.
Jotai DevTools
jotai-devtools paketi, tüm etkin atomları ve geçerli değerlerini listeleyen görsel bir panel sağlar. Paketi yükleyin, uygulamanızı DevTools ile sarın ve atom durumunu gerçek zamanlı olarak inceleyin.
Her atom güncellemesi, önceki ve sonraki değerle birlikte günlüğe kaydedilir; bu da karmaşık atom etkileşimlerinde hata ayıklamayı kolaylaştırır.
Seçici Yeniden Oluşturma Örneği
Büyük bir listede ListContainer bileşeni, selectedIdAtom'a abone olmadan seçimi güncellemek için useSetAtom(selectedIdAtom) kullanabilir. Seçim değiştiğinde yalnızca useAtomValue(selectedIdAtom) çağıran ayrı ListItem bileşenleri yeniden oluşturulur.
Bu örüntü iyi ölçeklenir: binlerce liste öğesi eklemek, seçim güncellemelerini yavaşlatmaz.
Üç Kancayı Birleştirme
Bileşeninizin gereksinimine uygun kancayı seçin: salt görüntüleme için useAtomValue, salt eylemler için useSetAtom, her ikisine de ihtiyaç duyduğunuzda useAtom. Bu bilinçli API tasarımı, bileşenin sorumluluğunu ilk bakışta anlaşılır kılar.
Bir form alanı bileşeni genellikle useAtom kullanır; gönder düğmesi useSetAtom kullanır; bir sayacı görüntüleyen etiket ise useAtomValue kullanır.
useSetAtom ve useAtom Karşılaştırması
useAtom yerine useSetAtom kullanmanın temel avantajı nedir?
Ders Özeti
useAtom hem değeri hem de setter'ı verir; useAtomValue yalnızca değeri verir (okuma abonelikleri); useSetAtom yalnızca setter'ı verir (değer değiştiğinde yeniden oluşturma olmaz). atomWithStorage, RESET desteğiyle localStorage'a kalıcı olarak kaydeder ve atomFamily, dinamik listeler için parametre başına atomlar oluşturur.
Doğru kancayı seçmek gereksiz yeniden oluşturmaları en aza indirir ve bileşenin amacını açıkça belirtir.
Sıkça Sorulan Sorular
“useAtom ile Atomları Okuma ve Yazma” dersi ücretsiz mi?
Evet — “useAtom ile Atomları Okuma ve Yazma” 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.
“useAtom ile Atomları Okuma ve Yazma” dersinde ne öğreneceğim?
Bileşen ağacının farklı yerlerindeki atomları okumak ve güncellemek için useAtom, useAtomValue ve useSetAtom kullanı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.
“useAtom ile Atomları Okuma ve Yazma” 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
- Atomlar: Jotai'de Durum Birimi
- useAtom ile Atomları Okuma ve Yazma
- Türetilmiş Atomlar ve Eş Zamanlı Olmayan Atomlar
- Jotai ve Zustand ile Context: Hangisi Ne Zaman Kullanılır