我如何检测当前是否按下了shift键?我有一个文本输入,当用户按下enter键时,我只想在他们没有当前按下enter键时提交表单(与桌面上的Facebook Messenger的表单功能相同)。
下面是我的文本输入:
<TextInput
style={styles.input}
placeholder={'Enter message'}
onKeyPress={this.handleKeyPress}
/>
这里是处理器:
handleMessageInputKeyPress(e) {
if(e.nativeEvent.key == "Enter"){
// Now check if the SHIFT key is currently pressed or not...
}
}
3条答案
按热度按时间ntjbwcob1#
你可以使用事件监听器来检测按键的任何时候被按下(或未按下),然后过滤结果,找到你想要用作条件的按键。
这将根据shift键是否被按住来改变状态为true或false。然后你可以把这个值插入到任何你需要的地方。提示:您可以使用此格式监听任何其他键。我很难找到有关这些键的名称的文档。如果您在查找键名时遇到困难,请执行此代码,然后在
downHandler
中的if
语句之前控制台日志key
。此外,确保将侦听器留在
useEffect
中,否则会发生数据泄漏。nzkunb0c2#
对于那些仍在寻找解决方案的人:
回调
onKeyPress
接收的event
似乎具有以下属性:很高兴看到它也有
ctrlKey
和altKey
。因此,解决办法是:
pn9klfpd3#
做一个像这样的钩子
然后用户可以像这样在其他组件中使用它;
有了技术,你可以Map任何三个组合键你喜欢