我遇到了在 React 组件中用作 Class 属性的箭头函数功能。在网上看,我发现它使代码更具可读性,并且由于箭头函数的特性,我们不必在构造函数中绑定handlEvents函数。
即使在为类属性使用箭头函数时,我仍然必须使用 bind 方法,如下面的代码所示。当我删除构造函数中的绑定时,它会在控制台中显示错误,Warning: A component is changing an uncontrolled input of type text to be controlled.
并且表单错误也不会显示
class Contact extends Component {
constructor(props) {
super(props);
this.handleBlur = this.handleBlur(this);
}
handleBlur = evt => field => {
this.setState({
touched: { ...this.state.touched, [field]: true }
});
render() {
return(
<Form onSubmit={this.handleSubmit}>
<FormGroup row>
<Label htmlFor="firstname" md={2}>
First Name
</Label>
<Col md={10}>
<Input
type="text"
id="firstname"
name="firstname"
placeholder="First Name"
valid={errors.firstname === ""}
invalid={errors.firstname !== ""}
value={this.state.firstname}
onBlur={event => {
this.handleBlur("firstname");
}}
onChange={this.handleInputChange}
/>
<FormFeedback>{errors.firstname}</FormFeedback>
</Col>
</FormGroup>
</Form>
)
}