受控

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;