javascript - onClick 一个按钮 setState 到 reactjs 中的一个值而不是 undefined
问题描述
我正在按钮上编写一个 onClick 事件来设置 a value: 0
,但在第一次单击时,它会给出“未定义”值。
我在构造函数value
中设置了状态null
处理函数代码
sitHandler = () => {
this.setState({
robotButtons: { value: 0, eventTime: Date.now() }
});
//am calling a socket here to send these new setState 'robotButtons'
data
console.log(this.state.robotButtons);
}
这是我的带有点击事件的按钮
<Button className="robot-control-button" onClick={this.handleSit}>
我尝试过使用e.preventdefault(e)
,但它会引发错误。
提前感谢您的帮助
解决方案
e.preventDefault()
抛出错误,因为事件未通过。
像这样使用。
<Button className="robot-control-button" onClick={(e)=>this.handleSit(e)}>
代码是
e.preventDefault();
不是e.preventdefault(e)
确保您正在接收事件,handleSit
例如 handleSit(e) { .... }
你的处理函数应该是这样的
sitHandler = (e) => {
e.preventDefault();
this.setState({
robotButtons: { value: 0, eventTime: Date.now() }
});
//am calling a socket here to send these new setState 'robotButtons' data
console.log(this.state.robotButtons); // this will not work, as setState is a asynchronous call. You need to use callback function as second paramenter,
}
console.log(this.state.robotButtons);
这不起作用,因为 setState 是异步调用。您需要使用回调函数作为第二个参数,
代码应该是
this.setState({
robotButtons: { value: 0, eventTime: Date.now() }
}, ()=> {
console.log(this.state.robotButtons);
// call socket connection here
});
推荐阅读
- python - 从触发事件选项测试云函数
- php - 来自服务器的空回复
- ruby-on-rails - Heroku 部署预编译资产失败
- html - 当另一个 div 滚动出 DOM 时如何显示一个 div
- sql - 如何在搜索功能中使用 NOT IN 和 LIKE?
- python - Faust for Python:如何启动 worker 来运行 hello world
- java - 调用 super.paint jframe 时的竞争条件
- c++ - 如何使用 x86 内在函数进行灰度 -> RGB 像素复制
- blazor - 如何在 Blazor 中使用 Azure App Config 中的功能标记?
- opengl - 是什么阻止了虚幻引擎中的 glGetTexImage?