[javascript] ReactJS에서 ‘onKeyPress’이벤트를 처리하는 방법은 무엇입니까?

onKeyPressReactJS 에서 이벤트를 어떻게 작동시킬 수 있습니까? enter (keyCode=13)누를 때 경고해야합니다 .

var Test = React.createClass({
    add: function(event){
        if(event.keyCode == 13){
            alert('Adding....');
        }
    },
    render: function(){
        return(
            <div>
                <input type="text" id="one" onKeyPress={this.add} />
            </div>
        );
    }
});

React.render(<Test />, document.body);



답변

React 0.14.7로 작업하고 있으며 사용 onKeyPress하고 event.key잘 작동합니다.

handleKeyPress = (event) => {
  if(event.key === 'Enter'){
    console.log('enter press here! ')
  }
}
render: function(){
     return(
         <div>
           <input type="text" id="one" onKeyPress={this.handleKeyPress} />
        </div>
     );
}


답변

render: function(){
     return(
         <div>
           <input type="text" id="one" onKeyDown={this.add} />
        </div>
     );
}

onKeyDownkeyCode이벤트를 감지 합니다.


답변

나를 위해 onKeyPresse.keyCode항상 0있지만, e.charCode정확한 값을 가지고있다. 경우 사용 onKeyDown에 올바른 코드를 e.charCode.

var Title = React.createClass({
    handleTest: function(e) {
      if (e.charCode == 13) {
        alert('Enter... (KeyPress, use charCode)');
      }
      if (e.keyCode == 13) {
        alert('Enter... (KeyDown, use keyCode)');
      }
    },
    render: function() {
      return(
        <div>
          <textarea onKeyPress={this.handleTest} />
        </div>
      );
    }
  });

키보드 이벤트 반응 .


답변

Keypress 이벤트는 더 이상 사용되지 않으므로 대신 Keydown 이벤트를 사용해야합니다.

https://developer.mozilla.org/en-US/docs/Web/API/Document/keypress_event

handleKeyDown(event) {
    if(event.keyCode === 13) {
        console.log('Enter key pressed')
  }
}

render() {
    return <input type="text" onKeyDown={this.handleKeyDown} />
}


답변

리 액트는 당신이 생각할만한 종류의 사건을 전달하지 않습니다. 오히려, 그것은 합성 사건을 통과하고 있습니다 .

간단한 테스트에서는 event.keyCode == 0항상 사실입니다. 당신이 원하는 것은event.charCode


답변

var Test = React.createClass({
     add: function(event){
         if(event.key === 'Enter'){
            alert('Adding....');
         }
     },
     render: function(){
        return(
           <div>
            <input type="text" id="one" onKeyPress={(event) => this.add(event)}/>
          </div>
        );
     }
});


답변

동적 입력을 동적 입력 내부의 함수에 전달하려면 다음을 수행하십시오.

<Input
  onKeyPress={(event) => {
    if (event.key === "Enter") {
      this.doSearch(data.searchParam)
    }
  }}
  placeholder={data.placeholderText} />
/>

이것이 누군가를 돕기를 바랍니다. 🙂