受控
import React, { Component } from 'react';
class CommentBox extends Component {
constructor(props) {
super(props);
this.state = {
value: ""
};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
//用户的每次输入都更新到state中
handleChange(event) {
this.setState({
value: event.target.value
});
}
//提交
handleSubmit(event){
event.preventDefault();
}
render() {
return (
<div>
<form classNam="p-5" onSubmit={this.handleSubmit}>
<div className="form-group">
<label>留言内容</label>
<input
type="text"
className="form-control"
placeholder="请输入内容"
onChange={this.handleChange}
value={this.state.value}
/>
</div>
<button type="submit" className="btn btn-primary">
留言
</button>
</form>
</div>
);
}
}
export default CommentBox;
非受控组件,将真实数据保存到DOM中。
更容易集成react和非react代码,如果你想快速而随性,这样可以代码量,否则你应该使用受控组件。
import React, { Component } from 'react';
class CommentBox extends Component {
constructor(props) {
super(props);
// this.state = {
// value: ""
// };
// this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
// //用户的每次输入都更新到state中
// handleChange(event) {
// this.setState({
// value: event.target.value
// });
// }
//提交
handleSubmit(event){
alert(this.textInput.value);
event.preventDefault();
}
render() {
return (
<div>
<form classNam="p-5" onSubmit={this.handleSubmit}>
<div className="form-group">
<label>留言内容</label>
<input
type="text"
className="form-control"
placeholder="请输入内容"
// onChange={this.handleChange}
// value={this.state.value}
//通过ref拿到dom节点
ref={(textInput)=>{this.textInput=textInput;}}
/>
</div>
<button type="submit" className="btn btn-primary">
留言
</button>
</form>
</div>
);
}
}
export default CommentBox;