0Pricing
React Academy · Ders

Özel useThrottle Kancası Uygulama

Kaydırma gibi hızlı olaylar sırasında bir değerin ne sıklıkla güncelleneceğini sınırlayan bir useThrottle kancası oluşturun

Özel useThrottle Kancası Uygulama, 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.

Hız Sınırlama Gecikmeli Çalıştırmadan Daha Zordur

Gecikmeli çalıştırma her olayda bir zamanlayıcıyı basitçe sıfırlar. Hız sınırlama ise son çalıştırmanın ne zaman gerçekleştiğini etkin biçimde izlemeli ve bir sonraki çalıştırma için yeterli zamanın geçip geçmediğine karar vermelidir. Bu, yeniden çizimler arasında bir zaman damgasının korunmasını gerektirir ve uygulamayı gecikmeli çalıştırmadan biraz daha karmaşık hâle getirir.

lastRunTime İçin useRef Kullanma

Son çalıştırmanın zaman damgası, kendi başına yeniden çizimleri tetiklemeden yeniden çizimler arasında korunmalıdır; bu nedenle useRef doğru araçtır. Zaman damgasını const lastRunTime = useRef(Date.now()) olarak saklayın. Durumun aksine, bir referansı güncellemek yeniden çizime neden olmaz; böylece hız sınırlama mantığı ek döngüler olmadan verimli biçimde çalışır.

Kanca İmzası

useThrottle(value, delay) kancası, giriş değerinin hız sınırlanmış bir sürümünü döndürür. Sözleşmesi useDebounce ile benzerdir: herhangi bir değeri ve milisaniye cinsinden bir gecikmeyi kabul eder, ardından hız sınırlanmış değeri döndürür. Bileşenler bunu aynı şekilde kullanabilir; böylece farklı zamanlama davranışları için doğrudan kullanılabilen bir alternatif elde edilir.

Son Kenar Uygulaması

Son kenar hız sınırlaması, her aralığın sonunda değeri günceller. Yeni bir değer geldiğinde, kalan aralık süresi için bir setTimeout planlayın: delay - (Date.now() - lastRunTime.current). Zamanlayıcı çalıştığında durumu güncelleyin ve yeni lastRunTime değerini kaydedin. Temizleme sırasında önceki zamanlayıcıları iptal edin.

Ön Kenar Uygulaması

Ön kenar hız sınırlaması, ilk değeri hemen uygular ve aralık sona erene kadar sonraki değerleri yok sayar. Şunu kontrol edin: Date.now() - lastRunTime.current >= delay ise durumu güncelleyin ve zamanı kaydedin. Aksi hâlde güncellemeyi atlayın. Bu, ilk işlemde anında geri bildirim ve ardından bir bekleme süresi sağlar.

Ön ve Son Kenarı Birleştirme

En iyi kullanıcı deneyimi çoğu zaman ikisini birleştirir: ilk olaya hemen yanıt verin (ön kenar), ardından aralık bittikten sonra son durumun da uygulanmasını sağlayın (son kenar). Böylece kullanıcı hızlı bir ilk yanıt görür ve hareket durduktan sonra son değer her zaman uygulanır; bu da güncel olmayan bir son durumun oluşmasını önler.

Zaman Aşımı Kimliği için useRef Kullanımı

Bekleyen zaman aşımı kimliğini bir useRef içinde saklayın: const timeoutRef = useRef(null). Yeni bir zaman aşımı planlamadan önce, mevcut olanı iptal etmek için clearTimeout(timeoutRef.current) çağırın. Bu, tek bir hız sınırlama aralığında birden çok güncelleme yapılmasına yol açabilecek, üst üste binen zamanlayıcıları önler.

Kaldırma Sırasında Temizleme

useEffect temizleme işlevi, bileşen kaldırıldığında bekleyen son kenar güncellemesini iptal etmek için clearTimeout(timeoutRef.current) çağırmalıdır. Aksi hâlde bekleyen zaman aşımı kaldırılmış bileşen üzerinde çalışarak durumu ayarlamaya çalışır ve React uyarılarına neden olabilir.

Hız Sınırlamalı Geri Çağırma Alternatifi

Değer tabanlı bir kanca yerine useCallback tabanlı bir hız sınırlama kancası oluşturabilirsiniz: useThrottledCallback(fn, delay) bir işlevin hız sınırlanmış sürümünü döndürür. Hız sınırlamak istediğiniz işlem tepkisel bir değer yerine bir işlev çağrısı olduğunda (örneğin bir analiz izleyicisi için) bu yaklaşım daha esnektir.

Sahte Zamanlayıcılarla Hız Sınırlamasını Test Etme

Jest testlerinde zamanı denetlemek için jest.useFakeTimers() kullanın. 1000 ms gecikmeli bir hız sınırlaması ayarlayın, art arda 10 hızlı değer değişikliği tetikleyin, ardından sahte zamanı 500 ms ilerletin ve yalnızca 1 veya 2 güncelleme yapıldığını kontrol edin. 500 ms daha ilerletin ve son kenar güncellemesinin çalıştığını doğrulayın. Bu, hız sınırlama davranışını güvenilir biçimde doğrular.

React Modelinde Hız Sınırlama

React, işlemeler sırasında durum güncellemelerini toplu hâlde işler. Durum güncellemeleri üzerinde çalışan bir hız sınırlaması bu modelle sorunsuz biçimde çalışır. Ancak React 18 Eşzamanlı Modunda işlemelerin kesintiye uğrayabileceğini unutmayın. Gerçek saat zamanına Date.now() aracılığıyla dayanan hız sınırlama mantığı, React'in zamanlamasından etkilenmez.

Hız Sınırlaması: Son Kenar mı, Ön Kenar mı

Son kenar hız sınırlaması hangi kenarda çalışır?

Ders Özeti: useThrottle Kancası

Hız sınırlama, son yürütme zamanını useRef ile izlemenizi gerektirir. Kanca, ön kenarı (anında), son kenarı (ertelenmiş) veya her ikisini uygulayabilir. Zaman aşımı kimliğini her zaman bir referans içinde saklayın ve temizleme sırasında iptal edin. İşlev tabanlı kullanım durumlarında useThrottledCallback kalıbını tercih edin. Güvenilirlik için sahte zamanlayıcılarla test edin.

Sıkça Sorulan Sorular

“Özel useThrottle Kancası Uygulama” dersi ücretsiz mi?

Evet — “Özel useThrottle Kancası Uygulama” 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.

“Özel useThrottle Kancası Uygulama” dersinde ne öğreneceğim?

Kaydırma gibi hızlı olaylar sırasında bir değerin ne sıklıkla güncelleneceğini sınırlayan bir useThrottle kancası oluşturun 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.

“Özel useThrottle Kancası Uygulama” 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. Arayüzlerde Debounce ve Throttle Neden Önemlidir
  2. Özel useDebounce Kancası Uygulama
  3. Özel useThrottle Kancası Uygulama
  4. Pratik Uygulamalar: Arama, Kaydırma, Yeniden Boyutlandırma
← React Academy Sayfasına Dön