我如何能使onKeyPress事件工作在ReactJS?当按下回车键(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);

当前回答

通过访问window元素,这对我来说是有效的

useEffect(() => {
    window.addEventListener('keypress', e => {
      console.log(e.key)
    });
  }, []);

其他回答

React不会传递给您您可能认为的那种事件。相反,它是传递合成事件。

在一个简短的测试中,事件。keyCode == 0总是true。你需要的是event.charCode

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

onKeyDown检测keyCode事件。

如果你想把一个动态参数传递给一个函数,在一个动态输入中::

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

希望这能帮助到一些人。:)

你需要调用event.persist();这个方法在你的keyPress事件上。 例子:

const MyComponent = (props) => {
   const keyboardEvents = (event) =>{
       event.persist();
       console.log(event.key); // this will return string of key name like 'Enter'
   }
   return(
         <div onKeyPress={keyboardEvents}></div>
   )
}

如果你现在在keyboardEvents函数中输入console.log(event),你会得到其他属性,比如:

keyCode // number
charCode // number
shiftKey // boolean
ctrlKey // boolean
altKey // boolean

还有很多其他属性

谢谢和问候

p.s.: React版本:16.13.1

我正在使用React 0.14.7,使用onKeyPress和事件。钥匙工作得很好。

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