Necesito configurar una combinación de botones en forma de entrada de mi aplicación de reacción.
Mi código es algo como esto.
//Form <input onKeyDown={keyHandler}/> //handler const keyhandler = (e) => { if(e.key === "ArrowUp") {//do something} if(e.key === 'ArrowUp' && e.getModifierState("Control")) {//do another thing}El problema es cuando el evento se dispara con una combinación, primero 'si' también es verdadero. ¿Cómo se separan "ArrowUp" y "ArrowUp" con el botón ctrl?
También intento así (pero no ayudó):
if(e.key === 'ArrowUp' && event.ctrlKey){ //do another thing}Solo siguiendo tu lógica,
if (Control is pressed) { if (ArrowUp is pressed) { // both are pressed } } else { if (ArrowUp is pressed) { // only arrow up is pressed } }Resolví mi problema usando este.
if(!e.getModifierState('Control')){ if(e.key == 'ArrowUp'){ //single button action } } if(e.key == "ArrowUp" && e.getModifierState("Control")){ //combo buttons action }