事件.react中未定义

问题描述

我正在尝试将文本字段中的键输入限制为数字或退格键或空格,因此我在设置状态之前进行检查,并在其他情况下防止事件的认行为,但我无法找到event.which事件或keyCode属性
我尝试event.persist()进行查看,但仍然相同,在which中没有名称event属性
which的{​​{1}}中有一个nativeEvent,但始终为0。

这是我app.js中使用的组件,我使用的是Material-ui的文本字段,而不是常规输入。

event

MobileNumber.tsx

解决方法

两个可能的问题:

  1. whichkeyCode均已弃用,因此,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")) {
    
  2. 请注意,change事件是普通的Event,而不是KeyboardEvent。它没有特定于键的信息,因为它不是特定于键的事件。如果您需要知道按下了什么键(在这种情况下,keydown可能就是您想要的),请改用按键事件。


旁注:在您的示例中没有理由调用persist,在事件处理程序返回后,您不会尝试使用属性。通常,避免使用persist。如果在处理程序返回后不需要需要key,则可以将其获取到本地变量:

const { key } = event;
// ...use `key`...