Input Terkontrol dengan Daftar Saran
Bangun fondasinya: input terkontrol yang menampilkan menu tarik turun saran terfilter di bawahnya.
Input Terkontrol dengan Daftar Saran adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.
Ikhtisar Struktur Komponen
Komponen pelengkapan otomatis memiliki dua bagian utama: masukan teks terkontrol dan daftar saran tarik-turun. Masukan berada dalam alur dokumen normal, sedangkan daftar tarik-turun diposisikan secara absolut tepat di bawahnya. Keduanya berfungsi sebagai satu komponen interaktif, meskipun merupakan elemen DOM yang terpisah.
Variabel Status yang Diperlukan
Anda memerlukan empat variabel status: inputValue (teks — isi yang diketik), suggestions (larik — elemen yang cocok saat ini), isOpen (boolean — apakah daftar tarik-turun terlihat), dan selectedIndex (angka — saran mana yang disorot untuk navigasi papan ketik, dimulai dari -1 yang berarti tidak ada yang dipilih).
Mengendalikan Masukan
Jadikan masukan sepenuhnya terkontrol: value={inputValue} dan onChange={e => setInputValue(e.target.value)}. Ini memberi React kendali penuh atas teks yang ditampilkan. Setiap penekanan tombol memperbarui status, yang memicu perenderan ulang dengan nilai baru. Jangan pernah menggunakan masukan yang tidak terkontrol untuk pelengkapan otomatis—Anda perlu membaca dan mengatur nilainya secara terprogram.
Menyaring dari Daftar Statis
Saat saran berasal dari larik lokal, lakukan penyaringan pada setiap perenderan berdasarkan inputValue: bandingkan setiap elemen menggunakan item.toLowerCase().includes(inputValue.toLowerCase()). Anda dapat menghitungnya dengan useMemo jika daftarnya besar agar tidak menghitung ulang pada setiap perenderan ulang. Untuk daftar kecil, penyaringan langsung sudah memadai.
Menampilkan dan Menyembunyikan Daftar Tarik-Turun
Tampilkan daftar tarik-turun ketika inputValue.length > 0 dan suggestions.length > 0. Tutup saat masukan kehilangan fokus, dengan penundaan singkat agar klik saran sempat tercatat terlebih dahulu, saat saran dipilih, atau saat tombol Escape ditekan. Atur isOpen dengan semestinya untuk mengendalikan perenderan kondisional.
Menangani Kehilangan Fokus dengan Penundaan
Peristiwa onBlur terjadi saat masukan kehilangan fokus, yang terjadi ketika pengguna mengeklik saran. Jika Anda langsung menutup daftar tarik-turun saat kehilangan fokus, klik pada saran tidak pernah tercatat karena daftar tersebut menghilang sebelum klik terjadi. Gunakan setTimeout(() => setIsOpen(false), 150) agar klik sempat tercatat.
Menata Gaya Daftar Tarik-Turun
Posisikan daftar tarik-turun dengan position: absolute agar menutupi konten di bawah masukan alih-alih mendorongnya ke bawah. Tetapkan z-index yang tinggi (100+) agar daftar tersebut muncul di atas konten lain. Tetapkan max-height bersama overflow-y: auto agar daftar tidak menjadi terlalu tinggi saat banyak hasil tersedia.
Membuat Saran Dapat Diklik
Setiap elemen saran harus memiliki pengendali onClick: onClick={() => { setInputValue(suggestion); setIsOpen(false); }}. Ini menetapkan masukan ke saran yang dipilih dan menutup daftar tarik-turun. Pemilihan terasa seketika dan alami, sesuai dengan perilaku yang diharapkan pengguna dari kolom pelengkapan otomatis.
Mencegah Kehilangan Fokus Sebelum Klik
Alternatif untuk pewaktu kehilangan fokus adalah menggunakan onMouseDown={e => e.preventDefault()} pada setiap elemen saran. Ini mencegah tindakan tekan tetikus merebut fokus dari masukan, sehingga peristiwa kehilangan fokus tidak pernah terjadi saat mengeklik saran. Masukan tetap mendapatkan fokus dan pengendali klik berjalan dengan baik.
Ikhtisar Interaksi Papan Ketik
Pelengkapan otomatis yang baik harus dapat dinavigasi dengan papan ketik. Pengguna harus dapat menekan ArrowDown untuk menyoroti saran pertama, terus menekannya untuk bergerak ke bawah dalam daftar, menekan Enter untuk memilih, dan menekan Escape untuk menutup tanpa memilih. Hal ini diterapkan dengan menangani onKeyDown pada elemen masukan.
Mengatur Ulang selectedIndex Saat Masukan Berubah
Setiap kali pengguna mengetik dan inputValue berubah, atur ulang selectedIndex ke -1. Ini menghapus pilihan papan ketik sebelumnya sehingga kumpulan saran tersaring yang baru dimulai tanpa sorotan. Indeks pilihan usang yang menunjuk ke elemen berbeda setelah daftar berubah akan membingungkan dan tidak benar.
Urutan Peristiwa Kehilangan Fokus vs Tekan Tetikus
Mengapa menggunakan onMouseDown dengan e.preventDefault() pada elemen saran, bukan mengandalkan pewaktu kehilangan fokus?
Rekap Pelajaran: Masukan Terkontrol dengan Saran
Komponen pelengkapan otomatis memerlukan empat variabel status: inputValue, suggestions, isOpen, dan selectedIndex. Gunakan masukan terkontrol, saring saran berdasarkan masukan, dan kelola visibilitas daftar tarik-turun melalui isOpen. Tangani kondisi perlombaan kehilangan fokus-sebelum-klik dengan pewaktu atau preventDefault pada onMouseDown. Atur ulang selectedIndex setiap kali masukan berubah.
Belajar React dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 88
- Pelajaran
- 324
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Input Terkontrol dengan Daftar Saran” gratis?
Ya — teks lengkap “Input Terkontrol dengan Daftar Saran” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Input Terkontrol dengan Daftar Saran”?
Bangun fondasinya: input terkontrol yang menampilkan menu tarik turun saran terfilter di bawahnya. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai React Academy?
Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Input Terkontrol dengan Daftar Saran” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Input Terkontrol dengan Daftar Saran
- Navigasi Keyboard dalam Daftar Saran
- Saran Asinkron dengan Debounce
- Aksesibilitas untuk Widget Pelengkapan Otomatis