комбинация кнопок в событии OnKeydown

#javascript #reactjs #if-statement #key #keydown

Вопрос:

Мне нужно настроить комбинацию кнопок в форме ввода моего приложения react.

  1. «CTRL «Стрелка вверх»
  2. «Стрела вверх»

Мой код примерно такой.

 //Form  lt;input onKeyDown={keyHandler}/gt;  //handler  const keyhandler = (e) =gt; {  if(e.key === "ArrowUp") {//do something}  if(e.key === 'ArrowUp' amp;amp; e.getModifierState("Control")) {//do another thing}   

Проблема в том, что когда событие запускается с комбинацией, сначала «если» также верно. Как разделить «Стрелка вверх» и «Стрелка вверх» с помощью кнопки ctrl?

Я тоже пытаюсь так (но это не помогло):

  if(e.key === 'ArrowUp' amp;amp; event.ctrlKey){ //do another thing}   

Комментарии:

1. Вы пытались изменить последовательность ваших if -утверждений? Просто сначала проверьте наличие ctrl кнопки. Это означает: переместите второе if утверждение перед первым!

Ответ №1:

Просто следую твоей логике,

 if (Control is pressed) {  if (ArrowUp is pressed) {  // both are pressed  }  } else {  if (ArrowUp is pressed) {  // only arrow up is pressed  }  }  

Ответ №2:

Я решил свою проблему с помощью этого.

 if(!e.getModifierState('Control')){  if(e.key == 'ArrowUp'){   //single button action  } } if(e.key == "ArrowUp" amp;amp; e.getModifierState("Control")){  //combo buttons action }