
Introducere
Atunci când aveți nevoie să ascultați o comandă rapidă, în mod normal ați folosi evenimentulonKeyDown.
În twenty-front totuși, s-ar putea să aveți conflicte între aceleași comenzi rapide folosite în componente diferite, montate simultan.
De exemplu, dacă aveți o pagină care ascultă tasta Enter, și un modal care ascultă aceeași tastă, cu o componentă Select în interiorul acelui modal care ascultă și ea tasta Enter, s-ar putea să apară un conflict când toate sunt montate simultan.
Hook-ul useScopedHotkeys
Pentru a gestiona această problemă, avem un hook personalizat care face posibilă ascultarea comenzilor rapide fără niciun conflict.
Îl așezați într-o componentă și va asculta comenzile rapide doar când componenta este montată ȘI când domeniul comenzii rapide specificat este activ.
How to listen for hotkeys in practice?
Sunt două etape implicate în configurarea ascultării comenzilor rapide:- Setați domeniul comenzii rapide care va asculta comenzi rapide
- Folosiți
useScopedHotkeyspentru a asculta comenzile rapide
Cazuri de utilizare pentru comenzi rapide
În general, veți avea două cazuri de utilizare care necesită comenzi rapide:- Într-o pagină sau componentă montată într-o pagină
- Într-o componentă de tip modal care preia focusul datorită unei acțiuni a utilizatorului
Ascultarea comenzilor rapide într-o pagină
Exemplu:Ascultarea comenzilor rapide într-o componentă de tip modal
În acest exemplu vom folosi o componentă modal care ascultă tasta Escape pentru a-i spune părintelui să o închidă. Aici interacțiunea utilizatorului modifică domeniul.Ce este un domeniu al comenzilor rapide?
Un domeniu al comenzilor rapide este un șir de caractere care reprezintă un context în care comenzile rapide sunt active. Este în general codificat sub forma unui enum. Când schimbați domeniul comenzii rapide, comenzile rapide care ascultă acest domeniu vor fi activate, iar cele care ascultă alte domenii vor fi dezactivate. Puteți seta doar un singur domeniu la un moment dat. Ca exemplu, domeniile comenzilor rapide pentru fiecare pagină sunt definite în enumulPageHotkeyScope: