首页 > 解决方案 > React onKeyPress 触发默认事件

问题描述

我有一个控件,我想在按键之前和之后执行一些逻辑。

onKeyPress={event => {
...
}}

我可以这样做event.preventDefault();,取消默认事件,或者不使用它不取消它。但是,我想在默认事件之前和之后执行一些逻辑。onKeyUp似乎没有做我想要的。还有什么办法吗?

更具体地说:我正在使用 Slate JS ( https://docs.slatejs.org/ ) 中的可编辑控件。在浏览器中,它创建一个常规div元素(事件是React.KeyboardEvent<HTMLDivElement>)。开箱即用的一件事是内联格式。如果用户按下粗体按钮,并且没有选择,并且光标不在单词的中间,则应用程序应将粗体样式应用于输入的下一个字符(如在 Word 中)。所以,我必须等待下一个字符,并有条件地对其应用格式。这就是为什么如果我们处于“准备粗体模式”时我需要保留一些状态标记,当在描述的条件下按下粗体时标记。在里面onKeyPress事件,我检查该标志是否已设置,如果是,我记得当前位置开始粗体标记。我想做的是立即触发默认事件以获取实际字符,然后完成定义选择的结尾,在范围内应用粗体标记,并将插入符号放在末尾。现在我必须使用onKeyUp来完成选择并进行标记。如果用户按住键并且字符在释放之前以非粗体显示,这会延迟格式化。

标签: javascriptreactjsslatejs

解决方案


推荐阅读