1 回答

TA贡献1811条经验 获得超6个赞
受控输入
您正在处理受控输入。如果您不需要保持状态,您可以使用不受控制的输入来实现相同 的效果(在底部,您会找到一个可以帮助您解决此问题的链接)。
要处理您需要的输入,可以执行以下操作:
重要提示:请注意 state 属性与输入名称匹配。
class App extends React.Component {
state = {
text: "",
checkbox: false,
dropdown: "",
date: "",
radio: ""
};
handleTextChange = event => {
const { name, value } = event.target;
this.setState({ [name]: value });
};
handleCheckboxChange = event => {
const { name } = event.target;
this.setState(previousState => ({ [name]: !previousState[name] }));
};
handleDropdownChange = event => {
const { name, value } = event.target;
this.setState({ [name]: value });
};
handleDateChange = event => {
const { name, value } = event.target;
this.setState({ [name]: value });
};
handleRadioChange = event => {
const { name, value } = event.target;
this.setState({ [name]: value });
};
render() {
return (
<div className="App">
<p>Text</p>
<input
type="text"
name="text"
onChange={this.handleTextChange}
value={this.state.text}
/>
<p>Checkbox</p>
<input
type="checkbox"
name="checkbox"
onChange={this.handleCheckboxChange}
value={this.state.checkbox}
/>
<p>Dropdown</p>
<select
name="dropdown"
value={this.state.dropdown}
onChange={this.handleDropdownChange}
>
<option name="option1">Option 1</option>
<option name="option2">Option 2</option>
</select>
<p>Date</p>
<input
type="date"
name="date"
onChange={this.handleDateChange}
value={this.state.date}
/>
<p>Radio</p>
<input
type="radio"
name="radio"
onChange={this.handleRadioChange}
value="option1"
/>
<label for="option1">Option 1</label>
<br />
<input
type="radio"
name="radio"
onChange={this.handleRadioChange}
value="option2"
/>
<label for="option2">Option 2</label>
</div>
);
}
}
然后,您可以简单地添加更多这些类型之一的输入,仔细匹配输入name到类状态 `property.
您可以在此代码框中找到一个工作示例:https ://codesandbox.io/s/controlled-inputs-jttq8
有关更详细的答案以及如何处理不受控制的表单,请参阅介质上的这篇很棒的文章:https ://medium.com/@agoiabeladeyemi/the-complete-guide-to-forms-in-react-d2ba93f32825
来源:https ://reactjs.org/docs/forms.html#control-components
添加回答
举报