【发布时间】:2020-10-25 15:44:58
【问题描述】:
我有多个文本输入字段和一个复选框。每当我选中复选框时,我都想清除其中一个文本输入字段。我为此查看了各种答案,但是没有一个有效。
这是我的代码:
import React, { Component } from 'react';
class Form extends Component {
state = {}
constructor(props) {
super(props);
this.state = {
text1: "",
text2: ""
};
this.handleChange = this.handleChange.bind(this);
this.handleClear = this.handleClear.bind(this);
}
handleChange(event) {
let name = event.target.name;
let value = event.target.value;
this.setState({[name]: value});
}
handleClear(event){
let checked = event.target.checked;
if(checked){
this.setState({"text2": ''}); // did not work
// how to do it???
console.log(this.state)
}
}
render() {
return (
<form>
<input type="text" name="text1" onChange={this.handleChange}/>
<input type="text" name="text2" onChange={this.handleChange}/>
<input type="checkbox" name="clear-text2" onChange={this.handleClear}/>
</form>
);
}
}
export default Form;
在此代码中,我希望在选中复选框时清除字段 text2。
【问题讨论】:
-
setState 是异步的,因此您无法查看状态是否在更改后立即更改。
-
@D10S 那么,如何立即执行呢?但即使在改变状态后,输入也不会被清除!我错过了什么?