javascript - React onKeyPress 触发默认事件
问题描述
我有一个控件,我想在按键之前和之后执行一些逻辑。
onKeyPress={event => {
...
}}
我可以这样做event.preventDefault();
,取消默认事件,或者不使用它不取消它。但是,我想在默认事件之前和之后执行一些逻辑。onKeyUp
似乎没有做我想要的。还有什么办法吗?
更具体地说:我正在使用 Slate JS ( https://docs.slatejs.org/ ) 中的可编辑控件。在浏览器中,它创建一个常规div
元素(事件是React.KeyboardEvent<HTMLDivElement>
)。开箱即用的一件事是内联格式。如果用户按下粗体按钮,并且没有选择,并且光标不在单词的中间,则应用程序应将粗体样式应用于输入的下一个字符(如在 Word 中)。所以,我必须等待下一个字符,并有条件地对其应用格式。这就是为什么如果我们处于“准备粗体模式”时我需要保留一些状态标记,当在描述的条件下按下粗体时标记。在里面onKeyPress
事件,我检查该标志是否已设置,如果是,我记得当前位置开始粗体标记。我想做的是立即触发默认事件以获取实际字符,然后完成定义选择的结尾,在范围内应用粗体标记,并将插入符号放在末尾。现在我必须使用onKeyUp
来完成选择并进行标记。如果用户按住键并且字符在释放之前以非粗体显示,这会延迟格式化。
解决方案
推荐阅读
- node.js - Socket.io 多页
- c - 什么语言环境 LC_CTYPE 用于 Windows unicode 控制台应用程序?
- javascript - 为什么在整个脚本完成后 Javascript 渲染到 DOM 的变化?
- sql - 无法通过使用 sql developer 绑定参数来更新表的列
- ios - 加速框架 - vDSP_zvmags - Swift 4.2
- python - 如何在python中生成YYYY-MM-DD格式的日期?
- wpf - 即使声明的尺寸与源相同,图像也会以大尺寸显示并被裁剪
- windows-installer - 自定义安装对话框,用于从三个或更多应用程序中选择安装文件
- javascript - Reactjs 和 Pokeapi JSON
- c# - 用于过滤相同数字对的 Lambda 表达式