2016-09-06 2 views
3

私はアプリケーションを作っています。ユーザーがctrl + enterを押したときに関数(この場合はshowMessage)を起動したいと思います。 どうすればよいでしょうか、できればjQueryを使わないでください。React:keydown(ctrl + enter)で関数を呼び出す

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; 
+0

'componentDidMount'の文書に' onkeypress'ハンドラを登録してください。 – Igorsvee

答えて

5

1)イベントリスナーを追加します。その後、ハンドラのチェックに)document.addEventListener('keydown',this.keydownHandler)

2をe.keyCode===13 && e.ctrlKey

3)componentWillUnmount

LIVE DEMO

にイベントリスナーを削除することを忘れないでください
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; 
+0

パーフェクトです。ちょうど私のプロジェクトに追加し、それは素晴らしい作品です。ありがとう! – Apswak

関連する問題