Запустить событие клавиатуры из React ref - PullRequest
0 голосов
/ 16 марта 2020

У меня есть компонент React с элементом input с прикрепленным ref . Мне известно об общем: inputRef.current.focus(); использование ссылки для фокусировки ввода текста. Но я изо всех сил пытаюсь найти хорошее решение для отправки определенного события клавиатуры из inputRef.current. Я пытался:

let downEv = new KeyboardEvent('keydown', {'keyCode': 40, 'which': 40});
inputRef.current.dispatchEvent(downEv);

Но это, похоже, ничего не делает.

Ответы [ 2 ]

2 голосов
/ 16 марта 2020

KeyboardEvent - это собственное событие браузера (которое отличается от события React's Syntheti c), поэтому вам необходимо добавить собственный прослушиватель, как показано ниже, для их прослушивания. пример на csb

useEffect(()=>{
    ref.current.addEventListener('keydown',handleKeyDown)
  },[ref])
0 голосов
/ 16 марта 2020

Это можно сделать, и вам не нужно использовать ref.

Вы можете попытаться изолировать то, что вы хотите вызвать, выполнив это:

handleKeyPress = (e) => {
  if (e.keyCode === 40) {
    // Whatever you want to trigger
    console.log(e.target.value)
  }
}
<input onKeyPress={handleKeyPress} />

Вы также можете вызвать это из формы, если вы предпочитаете:

<form onKeyPress={handleKeyPress}>
  ...
</form>
...