我在React应用程序中遇到了一个与处理键盘事件有关的奇怪问题.具体地说,当快速按Shift键,然后按字母键时,onKeyUp
事件处理程序会将e.key
值记录为RESET.但是,如果我按住Shift键,然后按字母键,它会正确地记录小写字符.
下面是相关代码:
import "./styles.css";
function Input({ keyupHandler }) {
return <input onKeyUp={keyupHandler} placeholder="Type here" />;
}
export default function App() {
function keyupHandler(e) {
console.log(e.key); // Logs lowercase for quick Shift+Key presses
}
return (
<div className="App">
<Input keyupHandler={keyupHandler} />
</div>
);
}
我还创建了一个CodeSandbox example来说明这种行为.当快速点击Shift键,然后点击字母键,导致e. key被记录为Ctrl时,该问题特别明显.如果在按字母键之前按住Shift键,则字符将以正确的字形记录.
我试图理解为什么这种时间差异会影响记录的按键情况,以及如何确保e. key正确反映按键的情况,即使是快速Shift+按键组合.
任何对这种行为的见解或在React中有效处理它的建议都将受到极大的欢迎.