javascript - 简单的反应组件无法读取状态
问题描述
我有一个登录组件,为了清楚起见,我将其简化为以下定义
import React from "react";
export default class LoginComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
userName: '',
};
this.updateUserName = this.updateUserName.bind(this);
}
onClickSignUp() {
console.log(this.state);
alert("clicked sign up with value: username=" + this.state.userName);
}
updateUserName(e) {
console.log(e);
this.setState({
userName: e.target.value
});
}
render() {
return (
<div className="LoginComponent">
<h1>Welcome!</h1>
<div className="UserNameSegment">
<text>UserName: </text>
<input id="UserNameInput" value={this.state.userName} onChange={e => this.updateUserName(e)} />
</div>
<div className="ButtonGroup">
<button id="SignUpButton" onClick={this.onClickSignUp}>Sign Up</button>
</div>
</div>
);
}
}
预期的功能是,当我单击注册按钮时,它会显示一个警报,通知我输入到输入中的用户名。目前,当我输入一些文本并单击注册按钮时,应用程序崩溃并告诉我我尚未定义 LoginComponent: 的状态Uncaught TypeError: Cannot read property 'state' of undefined
。我觉得我已经在构造函数中定义了状态......是否存在不会调用构造函数的实例?我在这里想念什么?
解决方案
this.onClickSignUp = this.onClickSignUp.bind(this);
您在constructor
函数中忘记了这一行。
推荐阅读
- javascript - 循环旋转木马中的 Coverflow 动画卡顿
- node.js - 无法使用 multer 在 nodejs 中发布空图像文件
- java - 为什么上部转换对象无法访问子类中覆盖的静态方法
- shell - RPM Build,如何在“%post”宏运行的shell脚本中获取RPM包的路径“rpm -ivh”
- javascript - AJAX 响应表单上的 AJAX 无限 preventDefault() (vanilla JS)
- javascript - 检查对象数组中是否存在对象ID
- r - R在标签区域中绘制
- wordpress - 如何在 WordPress 中仅将特定脚本/样式排入队列
- c# - 避免 HashSet 中的重复项
对于略有不同的值 - reactjs - React Router 在本地工作,但在部署到 Heroku 后不起作用