【发布时间】:2019-08-07 07:31:18
【问题描述】:
我是 reactjs 的新手。我正在使用两个文本框,一个允许用户输入一个数字并显示其正方形,另一个允许输入用户名,当单击提交按钮时,一个警告框应该会说你好用户名。 我可以生成正方形,但警报无法正常工作。
这是 HTML 和 CSS:
class EssayForm extends React.Component {
constructor(props) {
super(props);
this.state = {
value: '',
fname:'',
};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) {
this.setState({value: event.target.value});
this.setState({fname: event.target.fname});
}
handleSubmit(event) {
event.preventDefault();
alert('Hello: ' + this.state.fname);
}
render() {
return (
<div className="example">
<form onSubmit={this.handleSubmit}>
<span>Square of:</span>
<input type="text" value={this.state.value} onChange={this.handleChange} />
<span>First name:</span>
<input type="text" value={this.state.fname} />
<input type="submit" value="Submit" />
</form>
<div className="preview">
<h1>Square of no is</h1>
<div>{this.state.value * this.state.value}</div>
</div>
</div>
);
}
}
ReactDOM.render(<EssayForm />, document.getElementById('app'));
.example {
font-family: 'Open Sans', sans-serif;
display: flex;
padding: 20px;
form {
display: flex;
align-items: flex-start;
margin-right: 50px;
* {
margin-right: 10px;
}
}
h1 {
font-size: 20px;
font-weight: bold;
}
.preview {
white-space: pre;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="app"></div>
帮助我生成输入用户名的警报框。
【问题讨论】:
-
您正在用
event.target.fname覆盖this.state.fname,它不存在,因此未定义。直播代码:codesandbox.io/s/shy-grass-hkvkz -
为什么不直接使用官方 react 页面中提供的example 呢?它准确地显示了您想要实现的目标
-
@kboul 看起来这正是 OP 使用的,试图扩展它但不知道如何。
标签: javascript html reactjs react-dom