我试图根据存储在组件状态中的值来编写用户从下拉列表中选择的内容,但是我无法弄清楚如何获取所选选项的值并将其更新为storeType
州
这是我的下拉菜单:
<FormGroup>
<FormControl
componentClass="select"
placeholder="Store type"
onChange={this.handleCatChange}
>
<option value="placeholder">Choose eatery type...</option>
<option value="cafe">Cafe</option>
<option value="bakery">Bakery</option>
<option value="pizza">Pizza store</option>
<option value="sushi">Sushi store</option>
<option value="buffet">Buffet</option>
<option value="donut">Donut store</option>
<option value="other">Other</option>
</FormControl>
</FormGroup>
this.handleCatChange:
handleCatChange(e) {
this.setState({
storeType: e.target.value
})
console.log(this.state.storeType)
}
答案 0 :(得分:2)
您的州是有效的,但不是在您执行console.log
时。这是因为setState
是异步的,并且不会立即改变你的状态值。
根据the docs,
setState()不会立即改变this.state但会创建一个 待定状态转换。调用后访问this.state 方法可以返回现有值。没有 保证调用setState和调用的同步操作 为获得业绩增长而受到批评。
如果您需要确保在进行setState调用后对事件进行排序,则可以传递回调函数。
handleCatChange(e) {
this.setState({
storeType: e.target.value
}, () => console.log(this.state.storeType))
}
答案 1 :(得分:1)
你需要像这样绑定你的函数..
onChange={this.handleCatChange.bind(this)}
constructor () {
super();
this.state = {
storeType: ''
};
}
handleCatChange(e) {
const type = e.target.value;
this.setState({
storeType:type
});
}