如何在reactjs上检测Esc按键?类似于jquery
$(document).keyup(function(e) {
if (e.keyCode == 27) { // escape key maps to keycode `27`
// <DO YOUR WORK HERE>
}
});
一旦检测到,我想将信息传递给组件。我有3个组件,其中最后一个活动组件需要对逃逸键的反应做出反应。
我在想一种组件激活时的注册方式
class Layout extends React.Component {
onActive(escFunction){
this.escFunction = escFunction;
}
onEscPress(){
if(_.isFunction(this.escFunction)){
this.escFunction()
}
}
render(){
return (
<div class="root">
<ActionPanel onActive={this.onActive.bind(this)}/>
<DataPanel onActive={this.onActive.bind(this)}/>
<ResultPanel onActive={this.onActive.bind(this)}/>
</div>
)
}
}
在所有组件上
class ActionPanel extends React.Component {
escFunction(){
//Do whatever when esc is pressed
}
onActive(){
this.props.onActive(this.escFunction.bind(this));
}
render(){
return (
<input onKeyDown={this.onActive.bind(this)}/>
)
}
}
我相信这会起作用,但我认为它更像是回调。有没有更好的方法来解决这个问题?
您是否没有助焊剂实现来存储哪个是活动组件,而不是这样做呢?
—
本·黑尔
@BenHare:我还是很新。我正在研究迁移到React的可行性。我没有尝试过助焊剂,因此您建议我应该研究助焊剂以解决问题。PS:如何检测ESC按键?
—
Neo
只是为了澄清一下,您是否正在寻找文档级的按键检测,例如第一个代码块?还是输入字段?您可以执行任何一种操作,我只是不确定如何确定答案。例如,这是一个快速的文档级别: codepen.io/anon/pen/ZOzaPW
—
Brad Colthurst,2016年
文档级就可以了:)
—
新