[英]onchange event on react select trigger only by clicking
我的应用程序中有一个<select>
<select onChange={ e=>{this.setState({selectedValue:e.target.value})} }>
{this.state.someArr.map( val => <option value={val}> something </option>) }
</select>
现在,如果someArr
中的someArr
更改,它将导致在select元素内呈现新选项
但是onchange
不会触发,状态内的selectedValue
保持不变
我该如何克服这个问题? 我希望自动设置新值
首先,在使用React时,永远不要传递箭头功能,因为它每次都会传递不同的实例,并且可能导致不必要的渲染。
它不起作用的原因是,您试图在setState函数中访问该事件,并且您无法执行该操作。
这是您应该做的:
export default class Component extends React.Component {
constructor(props) {
super(props);
this.state = {
selectedValue: '',
someArr: []
};
}
onChange(e) {
let value = e.target.value;
this.setState({ selectedValue: value });
}
render () {
return <select onChange={this.onChange}}>
{this.state.someArr.map( val => <option value={val}> something </option>) }
</select>
}
}
您需要做的就是正确设置value
prop。
<select value={this.state.selectedValue} onChange={ e=>{this.setState({selectedValue:e.target.value})} }>
{this.state.someArr.map( val => <option value={val}> something </option>) }
</select>
希望这对您有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.