【发布时间】:2017-09-27 10:52:41
【问题描述】:
我正在尝试处理表单中的更改。我有标题、描述和类别。
第一个输入(标题) -> 无法在字段中输入。
第二个输入(描述) -> 可以输入字段但结果未定义。
第三个输入(类别 DDL)-> 无法更改所选类别,但默认选择在我的 alret 中输出为“drink”;
问题:
AddDeal 正在将文本类型的受控输入更改为 不受控制。输入元素不应从受控切换到 不受控制(反之亦然)。决定使用受控或 在组件的生命周期内不受控制的输入元素。
我在此处查看了有关受控组件的 react 文档,但由于我是新手,因此很难理解。
https://facebook.github.io/react/docs/forms.html#controlled-components
这是我的AddDeal.js代码
export default class AddDeal extends React.Component {
constructor(props) {
super(props);
// Set the state
this.state = {
title: '',
description: '',
category: 'technology'
};
this.onSubmit = this.onSubmit.bind(this);
this.handleChange = this.handleChange.bind(this);
}
onSubmit(e) {
e.preventDefault();
alert('Title is: ' + this.state.title + 'Description is: ' + this.state.description + 'Category is: ' + this.state.category);
}
handleChange(e) {
this.setState({
title: e.target.title,
description: e.target.description,
category: e.target.value
});
}
render() {
return (
<div>
<h1>Add Deal</h1>
<form onSubmit={this.onSubmit}>
<label><input value={this.state.title} onChange={this.handleChange} type="text" name="title"/></label>
<label><input value={this.state.description} onChange={this.handleChange} type="text" name="description" /></label>
<select value={this.state.category} onChange={this.handleChange}>
<option value="technology">Technology</option>
<option value="food">Food</option>
<option value="drink">Drink</option>
<option value="books">Books</option>
</select>
<input type="submit" value="Submit"/>
</form>
</div>
);
}
}
为什么获取输入如此困难?我应该使用道具而不是状态吗?谢谢。
【问题讨论】:
-
对不起,我从未看过这篇文章,但在阅读之后,使用状态处理输入变得更加清晰。谢谢
标签: javascript reactjs meteor