Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在react中未定义的事件_Javascript_Reactjs_Material Ui - Fatal编程技术网

Javascript 在react中未定义的事件

Javascript 在react中未定义的事件,javascript,reactjs,material-ui,Javascript,Reactjs,Material Ui,我试图将文本字段中的键输入限制为数字、退格或空格,因此我在设置状态之前进行检查,并在其他情况下防止事件的默认行为,但我无法找到事件的属性或keyCode。 我尝试了event.persist()来查看,但仍然相同,在event中没有名为的属性 在事件的nativeEvent中有一个,但它始终为0 这是我的app.js中的组件,我使用的是material ui的textfield,而不是普通的输入 MobileNumber.tsx: 从“React”导入React; 从“@material ui/

我试图将文本字段中的键输入限制为数字、退格或空格,因此我在设置状态之前进行检查,并在其他情况下防止事件的默认行为,但我无法找到事件的
属性或
keyCode

我尝试了
event.persist()
来查看,但仍然相同,在
event
中没有名为
的属性
在
事件的
nativeEvent
中有一个
,但它始终为0

这是我的app.js中的组件,我使用的是material ui的textfield,而不是普通的输入

MobileNumber.tsx

从“React”导入React;
从“@material ui/core”导入{TextField};
导出接口MobileNumberProps{
}
导出接口MobileNumberState{
价值:任何
}
类MobileNumber扩展了React.Component{
状态={
值:0,
}
handleChange=(值:任意)=>{
this.setState({value:value})
}
render(){
返回(
{
event.persist();
console.log('event is',event);
if(event.which!=8&&event.which!=0&&event.which<48 | | event.which>57)){
console.log('stopped')
event.preventDefault();
}
否则{
日志('event which',event.which);
console.log('allowed');
让值=event.target.value
这个.handleChange(值);
}
}}
value={this.state.value}
/>
);
}
}
导出默认移动枚举器;
两个可能的问题:

  • 它们都不推荐使用,所以React的合成事件中没有它们也就不足为奇了。现代房地产是

    例如,这:

    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
    事件是一个普通的事件,而不是一个特定于键的事件。它没有特定于键的信息,因为它不是特定于键的事件。如果您需要知道按下了什么键(在本例中可能是您想要的),请使用键事件


  • 旁注:在您的示例中,没有理由调用
    persist
    ,您不会尝试在事件处理程序返回后使用属性。通常,请避免
    persist
    。如果在处理程序返回后确实需要
    key
    ,您应该将其抓取到局部变量:

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

    @ash1102-
    change
    不是键盘事件,我已经更新了答案来解决这个问题。谢谢t.j。onChange是真正的问题,它与onkeydown一起工作很好,但我一定会使用key来代替它