0Pricing
React Academy · Pelajaran

Navigasi Keyboard dalam Daftar Saran

Tangani tombol ArrowUp, ArrowDown, Enter, dan Escape untuk menavigasi serta memilih saran tanpa mouse.

Navigasi Keyboard dalam Daftar Saran adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Menangani onKeyDown pada Masukan

Pasang pengendali papan ketik pada peristiwa onKeyDown di elemen masukan, bukan pada onKeyPress (usang) atau onKeyUp. keyDown berjalan sebelum karakter muncul di masukan, sehingga Anda dapat mencegat ArrowDown, ArrowUp, Enter, dan Escape sebelum tombol-tombol tersebut menimbulkan efek bawaan apa pun pada peramban.

Perilaku Tombol ArrowDown

Saat pengguna menekan ArrowDown, naikkan selectedIndex sebesar 1, dengan batas maksimum suggestions.length - 1: setSelectedIndex(prev => Math.min(prev + 1, suggestions.length - 1)). Panggil juga e.preventDefault() untuk mencegah kursor berpindah ke akhir teks masukan, yang merupakan perilaku bawaan peramban untuk ArrowDown pada masukan teks.

Perilaku Tombol ArrowUp

Saat pengguna menekan ArrowUp, kurangi selectedIndex sebesar 1, dengan batas minimum 0: setSelectedIndex(prev => Math.max(prev - 1, 0)). Anda juga dapat memilih untuk membatasi nilainya ke -1, yang berarti tidak ada pilihan, saat bergerak melewati indeks 0, sehingga pengguna dapat membatalkan pilihan dan kembali mengetik dengan bebas.

Perilaku Tombol Enter

Saat Enter ditekan dan selectedIndex >= 0, pilih saran yang disorot: atur inputValue ke suggestions[selectedIndex], tutup daftar tarik-turun, dan atur ulang selectedIndex ke -1. Jika tidak ada saran yang disorot (selectedIndex adalah -1), biarkan pengiriman formulir atau tindakan pencarian normal berlanjut.

Perilaku Tombol Escape

Saat Escape ditekan, tutup daftar tarik-turun dengan mengatur isOpen ke false dan mengatur ulang selectedIndex ke -1. Jangan hapus nilai masukan—pengguna hanya ingin menutup saran tanpa memilih salah satunya, sambil mempertahankan teks yang telah diketik untuk penyuntingan lebih lanjut.

Perilaku Tombol Tab

Saat Tab ditekan, tutup daftar tarik-turun karena peramban akan memindahkan fokus ke elemen berikutnya yang dapat menerima fokus. Mengatur isOpen ke false saat Tab memastikan daftar tarik-turun tidak tetap terbuka setelah fokus meninggalkan masukan. Anda tidak perlu memanggil preventDefault()—biarkan peramban menangani urutan tab alami.

Sorotan Visual untuk Baris yang Dipilih

Saran yang disorot harus tampak berbeda secara visual. Terapkan gaya aktif pada saran di selectedIndex: className={index === selectedIndex ? 'suggestion suggestion--active' : 'suggestion'}. Status aktif biasanya menggunakan perubahan warna latar belakang, sehingga jelas elemen mana yang akan dipilih jika Enter ditekan.

Menggulirkan Elemen yang Dipilih agar Terlihat

Saat daftar saran memiliki tinggi maksimum dan dapat digulir, elemen yang disorot mungkin bergeser keluar layar selama navigasi papan ketik. Gunakan larik referensi untuk menyimpan elemen DOM saran dan panggil listItemRefs.current[selectedIndex]?.scrollIntoView({ block: 'nearest' }) setiap kali selectedIndex berubah. Nilai blok nearest meminimalkan jumlah pengguliran.

Menyinkronkan selectedIndex Saat Saran Berubah

Saat masukan berubah dan daftar tersaring baru muncul, atur ulang selectedIndex ke -1 dalam pembaruan status yang sama atau dalam useEffect yang bergantung pada suggestions. Indeks usang yang menunjuk ke elemen yang dihapus dapat menyebabkan pengguna memilih saran yang salah.

Alur Lengkap Navigasi Papan Ketik

Alur pengguna lengkap: pengguna mengetik untuk menyaring, ArrowDown menyoroti elemen pertama, ArrowDown berikutnya bergerak menelusuri daftar, ArrowUp bergerak kembali ke atas, Enter memilih elemen yang disorot, dan Escape menutup tanpa memilih. Ini mencakup semua pola interaksi papan ketik standar yang diharapkan pengguna dari kolom pelengkapan otomatis.

Mencegah Perilaku Bawaan pada Tombol ArrowDown dan ArrowUp

Selalu panggil e.preventDefault() saat menangani ArrowDown dan ArrowUp di dalam masukan teks. Tanpanya, ArrowDown memindahkan kursor teks ke akhir dan ArrowUp memindahkannya ke awal. Pergerakan kursor ini akan bertentangan dengan navigasi berdasarkan indeks pilihan Anda sehingga menimbulkan perilaku yang membingungkan.

Pemetaan Tombol Navigasi Papan Ketik

Apa yang harus terjadi ketika pengguna menekan Enter dengan saran yang disorot pada selectedIndex = 2?

Ringkasan Pelajaran: Navigasi dengan Papan Ketik

Tangani onKeyDown pada masukan. ArrowDown menambah selectedIndex (dibatasi hingga nilai maksimum), ArrowUp menguranginya (dibatasi hingga 0 atau -1), Enter memilih item yang disorot, Escape menutup tanpa memilih, dan Tab menutup serta membiarkan peramban memindahkan fokus. Selalu panggil preventDefault pada tombol panah dan gulir item yang disorot hingga terlihat.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Navigasi Keyboard dalam Daftar Saran” gratis?

Ya — teks lengkap “Navigasi Keyboard dalam 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 “Navigasi Keyboard dalam Daftar Saran”?

Tangani tombol ArrowUp, ArrowDown, Enter, dan Escape untuk menavigasi serta memilih saran tanpa mouse. 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 2 dari 4.

Berapa lama pelajaran “Navigasi Keyboard dalam 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

  1. Input Terkontrol dengan Daftar Saran
  2. Navigasi Keyboard dalam Daftar Saran
  3. Saran Asinkron dengan Debounce
  4. Aksesibilitas untuk Widget Pelengkapan Otomatis
← Kembali ke React Academy