React Academy · Oppitunti

Näppäimistönavigointi ehdotuslistoissa

Käsitelkää ArrowUp-, ArrowDown-, Enter- ja Escape-näppäimiä ehdotusten navigointiin ja valintaan ilman hiirtä

Oppitunti 2/413 vaihetta

Näppäimistönavigointi ehdotuslistoissa on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.

onKeyDown-tapahtuman käsittely tekstikentässä

Näppäimistökäsittelijä liitetään tekstikentän onKeyDown-tapahtumaan, ei vanhentuneeseen onKeyPress- tai onKeyUp-tapahtumaan. keyDown laukeaa ennen kuin merkki ilmestyy tekstikenttään, joten ArrowDown-, ArrowUp-, Enter- ja Escape-näppäimet voidaan käsitellä ennen selaimen oletustoimintaa.

ArrowDown-näppäimen toiminta

Kun käyttäjä painaa ArrowDown-näppäintä, selectedIndex-arvoa kasvatetaan yhdellä ja sen ylärajaksi rajoitetaan suggestions.length - 1: setSelectedIndex(prev => Math.min(prev + 1, suggestions.length - 1)). Lisäksi kutsutaan e.preventDefault(), jotta kohdistin ei siirry tekstikentän tekstin loppuun. Tämä on selaimen oletustoiminta, kun ArrowDown-näppäintä painetaan tekstikentässä.

ArrowUp-näppäimen toiminta

Kun käyttäjä painaa ArrowUp-näppäintä, selectedIndex-arvoa pienennetään yhdellä ja sen alarajaksi rajoitetaan 0: setSelectedIndex(prev => Math.max(prev - 1, 0)). Arvon voi myös rajoittaa arvoon -1, joka tarkoittaa, ettei mitään ole valittu. Tällöin käyttäjä voi poistaa valinnan ja jatkaa kirjoittamista vapaasti indeksin 0 yläpuolelle siirryttäessä.

Enter-näppäimen toiminta

Kun Enter-näppäintä painetaan ja selectedIndex >= 0, korostettu ehdotus valitaan: inputValue asetetaan arvoon suggestions[selectedIndex], pudotusvalikko suljetaan ja selectedIndex nollataan arvoon -1. Jos mitään ehdotusta ei ole korostettu (selectedIndex on -1), tavallisen lomakkeen lähetyksen tai haun annetaan jatkua.

Escape-näppäimen toiminta

Kun Escape-näppäintä painetaan, pudotusvalikko suljetaan asettamalla isOpen arvoon false ja selectedIndex nollataan arvoon -1. Syötteen arvoa ei tyhjennetä: käyttäjä haluaa vain sulkea ehdotukset valitsematta mitään ja säilyttää kirjoittamansa tekstin jatkomuokkausta varten.

Tab-näppäimen toiminta

Kun Tab-näppäintä painetaan, pudotusvalikko suljetaan, koska selain siirtää fokuksen joka tapauksessa seuraavaan kohdistettavaan elementtiin. Asettamalla isOpen arvoon false Tab-näppäimen yhteydessä varmistetaan, ettei pudotusvalikko jää auki fokuksen siirtyessä pois tekstikentästä. Kutsua preventDefault() ei tarvita, vaan selaimen annetaan käsitellä normaali sarkainjärjestys.

Valitun rivin visuaalinen korostus

Korostetun ehdotuksen on erotuttava visuaalisesti. Aktiivista tyyliä käytetään ehdotukseen, jonka indeksi on selectedIndex: className={index === selectedIndex ? 'suggestion suggestion--active' : 'suggestion'}. Aktiivisessa tilassa taustaväriä yleensä muutetaan, jotta on selvää, mikä kohde valitaan Enter-näppäintä painettaessa.

Valitun kohteen vierittäminen näkyviin

Kun ehdotusluettelolla on enimmäiskorkeus ja sitä vieritetään, korostettu kohde voi näppäimistöllä liikuttaessa vierittyä pois näkyvistä. Tallenna ehdotusten DOM-elementit ref-taulukkoon ja kutsu listItemRefs.current[selectedIndex]?.scrollIntoView({ block: 'nearest' }) aina, kun selectedIndex muuttuu. nearest-lohkoarvo minimoi vierityksen määrän.

selectedIndex-arvon synkronointi ehdotusten muuttuessa

Kun syöte muuttuu ja uusi suodatettu luettelo tulee näkyviin, selectedIndex nollataan arvoon -1 saman tilapäivityksen yhteydessä tai useEffect-hookissa, jonka riippuvuutena ehdotukset ovat. Vanhentuneet indeksit, jotka viittaavat poistettuihin kohteisiin, saisivat käyttäjän valitsemaan väärän ehdotuksen.

Näppäimistökäytön täydellinen kulku

Täydellinen käyttäjäkulku on seuraava: käyttäjä kirjoittaa suodattaakseen ehdotuksia, ArrowDown korostaa ensimmäisen kohteen, seuraavat ArrowDown-painallukset siirtävät korostusta listassa alaspäin, ArrowUp siirtää sitä takaisin ylöspäin, Enter valitsee korostetun kohteen ja Escape sulkee ehdotukset tekemättä valintaa. Tämä kattaa kaikki vakiomuotoiset näppäimistökäytön toimintatavat, joita käyttäjät autocomplete-kentältä odottavat.

Oletustoiminnan estäminen nuolinäppäimillä

Kutsukaa aina e.preventDefault(), kun tekstikentän sisällä käsitellään ArrowDown- tai ArrowUp-näppäintä. Ilman tätä ArrowDown siirtää tekstikohdistimen loppuun ja ArrowUp alkuun. Nämä kohdistimen liikkeet olisivat ristiriidassa selectedIndex-navigoinnin kanssa ja aiheuttaisivat hämmentävää toimintaa.

Näppäimistön näppäinmääritys

Mitä pitäisi tapahtua, kun käyttäjä painaa Enter-näppäintä ja kohdassa selectedIndex = 2 oleva ehdotus on korostettuna?

Oppitunnin kertaus: näppäimistönavigointi

Käsittele syötteen onKeyDown-tapahtuma. ArrowDown kasvattaa selectedIndex-arvoa (ylärajaan rajattuna), ArrowUp pienentää sitä (alarajaan 0 tai -1 rajattuna), Enter valitsee korostetun kohteen, Escape sulkee valikon tekemättä valintaa ja Tab sulkee valikon sekä antaa selaimen siirtää kohdistuksen. Kutsu aina preventDefault-metodia nuolinäppäimille ja vieritä korostettu kohde näkyviin.

Aloita maksutta

Opi React tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
88
Oppitunnit
324

Usein kysytyt kysymykset

Onko oppitunti ”Näppäimistönavigointi ehdotuslistoissa” ilmainen?

Kyllä – oppitunnin ”Näppäimistönavigointi ehdotuslistoissa” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Näppäimistönavigointi ehdotuslistoissa”?

Käsitelkää ArrowUp-, ArrowDown-, Enter- ja Escape-näppäimiä ehdotusten navigointiin ja valintaan ilman hiirtä Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Näppäimistönavigointi ehdotuslistoissa”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?

Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Kontrolloitu syötekenttä ehdotuslistalla
  2. Näppäimistönavigointi ehdotuslistoissa
  3. Asynkroniset ehdotukset debouncella
  4. Autocomplete-widgettien saavutettavuus
← Takaisin: React Academy