如何解决事件.react中未定义
我正在尝试将文本字段中的键输入限制为数字或退格键或空格,因此我在设置状态之前进行检查,并在其他情况下防止事件的默认行为,但我无法找到event.which
事件或keyCode
的属性。
我尝试event.persist()
进行查看,但仍然相同,在which
中没有名称为event
的属性。which
的{{1}}中有一个nativeEvent
,但始终为0。
这是我app.js中使用的组件,我使用的是Material-ui的文本字段,而不是常规输入。
event
:
MobileNumber.tsx
解决方法
两个可能的问题:
-
which
和keyCode
均已弃用,因此,React的合成事件没有它们并不奇怪。现代属性是key
。例如,这个:
if (event.which != 8 && event.which != 0 && (event.which < 48 || event.which > 57)) {
可以这样写:
if (event.key !== "Backspace" && event.key !== "" && (event.key < "0" || event.key > "C")) {
-
请注意,
change
事件是普通的Event
,而不是KeyboardEvent
。它没有特定于键的信息,因为它不是特定于键的事件。如果您需要知道按下了什么键(在这种情况下,keydown
可能就是您想要的),请改用按键事件。
旁注:在您的示例中没有理由调用persist
,在事件处理程序返回后,您不会尝试使用属性。通常,避免使用persist
。如果在处理程序返回后不需要需要key
,则可以将其获取到本地变量:
const { key } = event;
// ...use `key`...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。