Реагировать на событие, распространяющееся в другом случае - PullRequest
0 голосов
/ 29 ноября 2018

скажем, у меня есть функция, которая запускается при нажатии клавиши, которая выглядит примерно так.Я хочу иметь особый случай, когда нажата Enter, в противном случае я хочу даже распространить / всплыть в браузере.Поэтому, если нажата любая другая клавиша, то есть стрелки вверх или вниз, они должны работать.

 onAutosuggestInputKeyDown = event => {
  if (event.key === 'Enter') {
     this.onCustomSuggestionCreate(event)
  } else {
      // keep propgating the event 
  }
}


getAutosuggestInputProps = () => {
    return {
      inputProps: {
        onBlur: this.onCustomSuggestionCreate,
        onKeyDown: this.onAutosuggestInputKeyDown,
      },
    }
  }


<ReactAutoSuggest textFieldProps={this.getAutosuggestInputProps()}/>

1 Ответ

0 голосов
/ 29 ноября 2018

Если я правильно понимаю вашу ситуацию, то даже распространение должно происходить по умолчанию (в зависимости от типа элемента, который вызвал событие).

Однако вы, вероятно, захотите использовать stopPropagation() в случае нажатия клавиши ввода для предотвращения распространения этого события, что будет достигнуто следующим обновлением вашегоonAutosuggestInputKeyDown метод:

onAutosuggestInputKeyDown = event => {
  if (event.key === 'Enter') {

     // Prevent this event from propagating if enter key pressed
     event.stopPropagation()

     this.onCustomSuggestionCreate(event)
  }

  // If stopPropagation() not called on event, the event will propagate
  // if it has the ability to do so (ie from the element dispatching the 
  // event)
}
...