0Pricing
React Academy · Ders

Debounce ile Eş Zamanlı Olmayan Öneriler

Kullanıcı yazarken bir API'den öneriler alın ve aşırı ağ isteklerinden kaçınmak için bunları geciktirin

Debounce ile Eş Zamanlı Olmayan Öneriler, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 3. 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.

Statik Filtreyi API'den Veri Getirmeyle Değiştirme

Yerel bir diziyi filtrelemek yerine, sorguya göre eşleşen önerileri döndüren bir API uç noktası çağırın. API çağrısını, ertelenmiş giriş değerine bağlı olan bir useEffect içine yerleştirin. Böylece filtreleme sorumluluğu sunucuya aktarılır; yaklaşık eşleştirme, sıralama ve çok daha büyük bir veri kümesinden öneriler sunulabilir.

Yükleme ve Hata için Yeni Durum

Otomatik tamamlamaya iki yeni durum değişkeni ekleyin: Veri getirme işlemi sürerken bir yükleme göstergesi görüntülemek için isLoading (boolean), veri getirme başarısız olduğunda hata mesajı görüntülemek için error (string veya null). Bunlar, kullanıcıların önerilerin neden görünmediğini merak etmesini önleyerek eşzamansız işlem hakkında geri bildirim sağlar.

Veri Getirme Etkisi

Veri getirme useEffect etkisinin başında setIsLoading(true) ve setError(null) çağrılarını yapın; ardından fetch(url) çağrısını yapıp JSON'u ayrıştırın, setSuggestions(data) çağrısını yapın ve son olarak bir sonlandırma bloğunda veya hem başarı hem de hata yollarından sonra setIsLoading(false) çağrısını yapın. Etkinin bağımlılık dizisi yalnızca debouncedInputValue içermelidir.

İstekleri İptal Etmek için AbortController Kullanma

Etkinin başında yeni bir AbortController oluşturun ve controller.signal değerini veri getirme seçeneklerine geçirin. Temizleme işlevinde controller.abort() çağrısını yapın. Kullanıcı yazdığında ve ertelenmiş değer değiştiğinde, yeni veri getirme işlemi başlamadan önce önceki işlem iptal edilir; böylece güncelliğini yitirmiş sonuçların yanlış sırayla gelmesi önlenir.

İptal Hatalarını Ele Alma

Bir veri getirme işlemi iptal edildiğinde, AbortError adlı bir DOMException ile reddedilir. Yakalama bloğunuzda, iptal edilen veri getirme işlemlerini sessizce yok saymak için if (err.name === 'AbortError') return; denetimini yapın. Yalnızca kullanıcıya gösterilmesi gereken gerçek ağ veya API hatalarını ele alın.

isLoading Durumunu Yönetme

Veri getirme işleminden önce isLoading değerini true, işlem başarıyla sonuçlandıktan veya reddedildikten sonra false olarak ayarlayın. Her zaman sıfırlanmasını sağlamak için bir finally bloğu kullanın: fetch(url).then(...).catch(...).finally(() => setIsLoading(false)). Sonlandırma bloğu olmadan, veri getirme hatası yükleme göstergesinin sonsuza kadar çalışmasına neden olur.

Açılır Listede Yükleme Göstergesi

isLoading değeri true olduğunda ve giriş alanında metin bulunduğunda, öneri listesi yerine içinde ortalanmış bir yükleme göstergesi bulunan açılır listeyi gösterin. Bu, sonuçların hazırlanmakta olduğunu kullanıcıya bildirir. Yükleme tamamlanıp öneriler geldiğinde, yükleme göstergesini gerçek öneri öğeleriyle değiştirin.

Açılır Listede Hata Durumu

error değeri null değilse, öneriler yerine hata mesajını içeren açılır listeyi gösterin. "Öneriler yüklenemedi. Lütfen yeniden deneyin." gibi bir mesaj, ham hata metninden daha kullanıcı dostudur. İsteğe bağlı olarak, veri getirme işlemini elle yeniden başlatan bir yeniden deneme düğmesi ekleyebilirsiniz.

Minimum Karakter Eşiği

Çok sayıda ilgisiz sonuç üreten boş dizeler veya çok kısa sorgular için veri getirmekten kaçının. Etkinin başında şu koşulu kullanın: if (debouncedInputValue.length < 2) { setSuggestions([]); return; }. Bu, gereksiz API çağrılarını azaltır ve tek bir karakterden çok büyük bir sonuç listesi oluşmasını önler.

Getirilen Sonuçları Önbelleğe Alma

Getirilen sonuçları bir useRef Map'inde saklayın: const cache = useRef(new Map()). Veri getirmeden önce if (cache.current.has(query)) { setSuggestions(cache.current.get(query)); return; } denetimini yapın. Başarılı bir veri getirme işleminden sonra sonucu saklayın. Böylece kullanıcının daha önce yazdığı sorgular için yinelenen ağ istekleri ortadan kaldırılır.

Önerilen Erteleme Gecikmesi

Özellikle otomatik tamamlama için 200-300 ms'lik erteleme gecikmesi ideal aralıktır. Daha kısa gecikmeler (200 ms'nin altında), hızlı yazan kullanıcılar için çok fazla istek başlatır. Daha uzun gecikmeler (400 ms'nin üzerinde) önerilerin yavaş ve tepkisiz görünmesine neden olur. 250 ms, üretim ortamındaki otomatik tamamlama uygulamalarında sık kullanılan bir varsayılan değerdir.

Otomatik Tamamlamada AbortController

Bir API'den veri getiren, erteleme kullanan bir otomatik tamamlamada AbortController neden önemlidir?

Ders Özeti: Ertelemeli Eşzamansız Öneriler

Statik filtrelemeyi, ertelenmiş değere bağlı bir useEffect içindeki API'den veri getirme işlemiyle değiştirin. Güncelliğini yitirmiş istekleri iptal etmek için AbortController kullanın. Kullanıcıya geri bildirim sağlamak üzere isLoading ve error durumlarını ekleyin. Gereğinden fazla çağrı yapılmasını önlemek için minimum karakter eşiği belirleyin. Yinelenen ağ isteklerini atlamak için sonuçları bir başvuruda önbelleğe alın.

Sıkça Sorulan Sorular

“Debounce ile Eş Zamanlı Olmayan Öneriler” dersi ücretsiz mi?

Evet — “Debounce ile Eş Zamanlı Olmayan Öneriler” 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.

“Debounce ile Eş Zamanlı Olmayan Öneriler” dersinde ne öğreneceğim?

Kullanıcı yazarken bir API'den öneriler alın ve aşırı ağ isteklerinden kaçınmak için bunları geciktirin 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 3. dersidir.

“Debounce ile Eş Zamanlı Olmayan Öneriler” 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. Öneri Listeli Denetimli Girdi
  2. Öneri Listelerinde Klavye ile Gezinme
  3. Debounce ile Eş Zamanlı Olmayan Öneriler
  4. Otomatik Tamamlama Bileşenlerinde Erişilebilirlik
← React Academy Sayfasına Dön