Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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 单击按钮将状态设置为reactjs中的值,而不是未定义的值_Javascript_Reactjs - Fatal编程技术网

Javascript 单击按钮将状态设置为reactjs中的值,而不是未定义的值

Javascript 单击按钮将状态设置为reactjs中的值,而不是未定义的值,javascript,reactjs,Javascript,Reactjs,我在一个按钮上编写一个onClick事件来设置值:0,但在第一次单击时,它给出了“未定义”的值 我已在构造函数中将value的状态设置为null 处理函数代码 这是我的点击事件按钮 <Button className="robot-control-button" onClick={this.handleSit}> 我尝试过使用e.preventdefault(e),但它抛出了一个错误 提前感谢您的帮助您需要在回调中编写console,因为setState需要一些时间来更新值 t

我在一个按钮上编写一个onClick事件来设置
值:0
,但在第一次单击时,它给出了“未定义”的值

我已在构造函数中将
value
的状态设置为
null

处理函数代码 这是我的点击事件按钮

<Button className="robot-control-button" onClick={this.handleSit}>

我尝试过使用
e.preventdefault(e)
,但它抛出了一个错误


提前感谢您的帮助

您需要在回调中编写console,因为setState需要一些时间来更新值

this.setState({
    robotButtons: { value: 0, eventTime: Date.now() }
},function(){
   console.log(this.state.robotButtons);
});

您需要在回调中写入控制台,因为setState需要一些时间来更新值

this.setState({
    robotButtons: { value: 0, eventTime: Date.now() }
},function(){
   console.log(this.state.robotButtons);
});
e.preventDefault()
由于未传递事件而引发错误

像这样使用

<Button className="robot-control-button" onClick={(e)=>this.handleSit(e)}>
console.log(this.state.robotButtons)这将不起作用,因为setState是一个异步调用。您需要使用回调函数作为第二个参数

代码应该是

 this.setState({
        robotButtons: { value: 0, eventTime: Date.now() }
    }, ()=> {
     console.log(this.state.robotButtons);
     // call socket connection here
});
e.preventDefault()
由于未传递事件而引发错误

像这样使用

<Button className="robot-control-button" onClick={(e)=>this.handleSit(e)}>
console.log(this.state.robotButtons)这将不起作用,因为setState是一个异步调用。您需要使用回调函数作为第二个参数

代码应该是

 this.setState({
        robotButtons: { value: 0, eventTime: Date.now() }
    }, ()=> {
     console.log(this.state.robotButtons);
     // call socket connection here
});

请使用jsx和SiteHandler添加完整代码请在使用回调函数后使用jsx和SiteHandler添加完整代码使用回调函数处理这些值效果很好,感谢您提供有关setState异步调用的帮助和信息@kiranvj@Niki状态更新可以是异步的,React可以批处理多个
setState()
调用单个更新以提高性能。在使用回调函数后,这里提供了更多信息。它可以很好地处理这些值,感谢您提供有关setState异步调用的帮助和信息@kiranvj@Niki状态更新可以是异步的,React可以将多个
setState()
调用批处理到单个更新中以提高性能。更多信息请点击这里