I'm making an app and I want to fire a function (in this case the showMessage) when the user presses Ctrl + Enter.
How would I do this, preferably without jQuery?
import React from "react"
const App = React.createClass({
showMessage () {
console.log('hit');
},
render () {
return (
<div>
<button onClick={this.showMessage}>Hit</button>
</div>
);
}
});
module.exports = App;
2 Answers 2
add event listener:
document.addEventListener('keydown',this.keydownHandler)then in handler check
e.keyCode===13 && e.ctrlKeydon't forget to remove event listener in
componentWillUnmount
const App = React.createClass({
showMessage () {
alert('SOME MESSAGE');
},
keydownHandler(e){
if(e.keyCode===13 && e.ctrlKey) this.showMessage()
},
componentDidMount(){
document.addEventListener('keydown',this.keydownHandler);
},
componentWillUnmount(){
document.removeEventListener('keydown',this.keydownHandler);
},
render () {
return (
<div>
<h1>Press Ctrl+Enter</h1>
<button onClick={this.showMessage}>Hit</button>
</div>`
);
}
});
export default App;
BSMP
4,9108 gold badges36 silver badges46 bronze badges
answered Sep 6, 2016 at 18:48
Kokovin Vladislav
10.4k5 gold badges41 silver badges36 bronze badges
Sign up to request clarification or add additional context in comments.
2 Comments
WillKre
Perfect. Just added it to my project and it works great. Thanks!
Aaron Ford
keyCode is now deprecated. Use e.key === 'Enter' && e.ctrlKey instead.Can also be done using functional components too
export function App() {
const showMessage = () => {
alert('SOME MESSAGE');
};
const keydownHandler = (e) => {
if(e.key === 'Enter' && e.ctrlKey) showMessage()
};
React.useEffect(() => {
document.addEventListener('keydown', keydownHandler);
return () => {
document.removeEventListener('keydown', keydownHandler);
}
}, []);
return (
<div>
<h1>Press Ctrl+Enter</h1>
<button onClick={showMessage}>Hit</button>
</div>
);
}
Daniel Liuzzi
17.3k8 gold badges55 silver badges57 bronze badges
answered Nov 3, 2022 at 13:07
Ben Winding
12.1k5 gold badges93 silver badges80 bronze badges
Comments
lang-js
onkeypresshandler for the document incomponentDidMount