Öneri Listeli Denetimli Girdi
Temeli oluşturun: altında filtrelenmiş bir öneri açılır listesi gösteren denetimli bir girdi oluşturun
Öneri Listeli Denetimli Girdi, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 1. 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.
Bileşen Yapısına Genel Bakış
Bir otomatik tamamlama bileşeninin iki ana bölümü vardır: denetimli bir metin girişi ve açılır bir öneri listesi. Giriş normal belge akışında yer alır, açılır liste ise doğrudan altında mutlak olarak konumlandırılır. Birlikte tek bir etkileşimli denetim gibi çalışırlar; ancak ayrı DOM öğeleridir.
Gerekli Durum Değişkenleri
Dört durum değişkenine ihtiyacınız vardır: inputValue (dize — yazılan metin), suggestions (dizi — mevcut eşleşen öğeler), isOpen (mantıksal değer — açılır listenin görünür olup olmadığı) ve selectedIndex (sayı — klavye gezinmesi için hangi önerinin vurgulandığı; hiçbiri seçilmediğinde -1 ile başlar).
Girişi Denetleme
Girişi tamamen denetimli hâle getirin: value={inputValue} ve onChange={e => setInputValue(e.target.value)}. Bu, görüntülenen metnin tüm denetimini React'e verir. Her tuş vuruşu durumu günceller ve yeni değerle yeniden işlemeyi tetikler. Otomatik tamamlama için hiçbir zaman denetimsiz giriş kullanmayın; değeri programlı olarak okumanız ve ayarlamanız gerekir.
Statik Listeden Filtreleme
Öneriler yerel bir diziden geldiğinde, her işlemede inputValue temelinde filtre uygulayın: her öğeyi item.toLowerCase().includes(inputValue.toLowerCase()) kullanarak karşılaştırın. Liste büyükse her yeniden işlemede yeniden hesaplamayı önlemek için bunu useMemo ile hesaplayabilirsiniz. Küçük listelerde satır içinde filtreleme yeterlidir.
Açılır Listeyi Gösterme ve Gizleme
inputValue.length > 0 ve suggestions.length > 0 olduğunda açılır listeyi açın. Giriş odağını kaybettiğinde (öneri tıklamalarının önce kaydedilebilmesi için küçük bir gecikmeyle), bir öneri seçildiğinde veya Kaçış tuşuna basıldığında listeyi kapatın. Koşullu oluşturmayı yönlendirmek için isOpen değerini buna göre ayarlayın.
Gecikmeyle Odak Kaybını İşleme
onBlur olayı, giriş odağını kaybettiğinde tetiklenir; bu durum kullanıcı bir öneriye tıkladığında gerçekleşir. Odak kaybında açılır listeyi hemen kapatırsanız öneriye yapılan tıklama kaydedilmez, çünkü tıklama gerçekleşmeden önce liste kaybolur. Tıklamanın kaydedilmesi için zaman tanımak üzere setTimeout(() => setIsOpen(false), 150) kullanın.
Açılır Listeyi Biçimlendirme
Açılır listeyi position: absolute ile konumlandırın; böylece girişi aşağı itmek yerine altındaki içeriğin üzerine yerleşir. Diğer içeriğin üzerinde görünmesi için yüksek bir z-index (100+) ayarlayın. Çok sayıda sonuç olduğunda listenin aşırı uzamasını önlemek için overflow-y: auto ile birlikte bir max-height belirleyin.
Önerileri Tıklanabilir Hâle Getirme
Her öneri öğesinde bir onClick işleyicisi bulunmalıdır: onClick={() => { setInputValue(suggestion); setIsOpen(false); }}. Bu, girişi seçilen öneriye ayarlar ve açılır listeyi kapatır. Seçim anında ve doğal hissettirir; bu da kullanıcıların otomatik tamamlama alanlarından beklediği davranışla uyumludur.
Tıklamadan Önce Odak Kaybını Önleme
Odak kaybı için zaman aşımı gecikmesi kullanmaya alternatif olarak her öneri öğesinde onMouseDown={e => e.preventDefault()} kullanabilirsiniz. Bu, fare basma olayının girişteki odağı almasını önler; böylece bir öneriye tıklanırken odak kaybı olayı tetiklenmez. Giriş odağını korur ve tıklama işleyicisi sorunsuz biçimde çalışır.
Klavye Etkileşimine Genel Bakış
İyi bir otomatik tamamlama bileşeni klavyeyle kullanılabilmelidir. Kullanıcı ilk öneriyi vurgulamak için ArrowDown tuşuna basabilmeli, liste içinde aşağı ilerlemek için bu tuşa basmaya devam edebilmeli, seçmek için Giriş tuşuna basabilmeli ve seçim yapmadan kapatmak için Kaçış tuşuna basabilmelidir. Bu işlem, giriş öğesindeki onKeyDown olayının işlenmesiyle uygulanır.
Giriş Değiştiğinde selectedIndex Değerini Sıfırlama
Kullanıcı her yazdığında ve inputValue değiştiğinde selectedIndex değerini -1 olarak sıfırlayın. Bu, önceki klavye seçimini temizler; böylece yeni filtrelenmiş öneri kümesinde hiçbir öğe vurgulanmış olmaz. Liste değiştikten sonra farklı bir öğeye işaret eden güncel olmayan bir seçim dizini kafa karıştırıcı ve hatalıdır.
Odak Kaybı ve Fare Basma Olayı Sırası
Bir odak kaybı gecikmesine güvenmek yerine öneri öğelerinde neden onMouseDown ile e.preventDefault() kullanılır?
Ders Özeti: Önerilerle Denetimli Giriş
Bir otomatik tamamlama denetimi dört durum değişkenine ihtiyaç duyar: inputValue, öneriler, isOpen ve selectedIndex. Denetimli bir giriş kullanın, önerileri girişe göre filtreleyin ve açılır listenin görünürlüğünü isOpen aracılığıyla yönetin. Odak kaybından önce tıklama yarış koşulunu ya bir zaman aşımıyla ya da onMouseDown preventDefault kullanarak ele alın. Giriş değiştiğinde selectedIndex değerini sıfırlayın.
Sıkça Sorulan Sorular
“Öneri Listeli Denetimli Girdi” dersi ücretsiz mi?
Evet — “Öneri Listeli Denetimli Girdi” 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.
“Öneri Listeli Denetimli Girdi” dersinde ne öğreneceğim?
Temeli oluşturun: altında filtrelenmiş bir öneri açılır listesi gösteren denetimli bir girdi 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 1. dersidir.
“Öneri Listeli Denetimli Girdi” 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
- Öneri Listeli Denetimli Girdi
- Öneri Listelerinde Klavye ile Gezinme
- Debounce ile Eş Zamanlı Olmayan Öneriler
- Otomatik Tamamlama Bileşenlerinde Erişilebilirlik