Еще не добавил комментарий, чтобы комментировать ваш ответ, но я хотел бы предложить улучшение.
Попробуйте использовать пространство имен событий, когда вы привязываете/отменяете их. Это особенно важно при связывании события к телу, так как она позволяет отвязать, не нарушая каких-либо других привязок одного и того же типа:
См:
https://css-tricks.com/namespaced-events-jquery/
componentDidMount: function() {
$(document.body).on('keydown.awesomeNamespaceName', this.handleKeyDown);
},
componentWillUnMount: function() {
$(document.body).off('keydown.awesomeNamespaceName', this.handleKeyDown);
},
handleKeyDown: function(event) {
if (event.keyCode == 13 /*enter*/) {
this.okAction();
}
if (event.keyCode == 27 /*esc*/) {
this.cancelAction();
}
},
http://stackoverflow.com/questions/27827234/ke ypress-event-handling-in-reactjs, возможно, это поможет вам –