Javascript 如何获取<;选择>;你有什么反应?
举个例子Javascript 如何获取<;选择>;你有什么反应?,javascript,reactjs,drop-down-menu,Javascript,Reactjs,Drop Down Menu,举个例子 红色从一开始就被选中 然后我选择绿色。也就是说,从红色到绿色 我可以在event.currentTarget.value中获得新值绿色。但是我怎样才能得到以前的红色 <select className="foo" onChange={this.onSectChange} value="red"> <option value="no color">No Color</option> <option value="red">R
红色
从一开始就被选中
然后我选择绿色。也就是说,从红色
到绿色
我可以在event.currentTarget.value
中获得新值绿色
。但是我怎样才能得到以前的红色
<select className="foo" onChange={this.onSectChange} value="red">
<option value="no color">No Color</option>
<option value="red">Red</option> // this one is selected
<option value="green">Green</option> // this one I will select
<option value="blue">Blue</option>
</select>
onSectChange = (event) => {
let prevVal = event.??? // How to get a previous value, that is Red
let newVal = event.currentTarget.value; // Green - is a new value just selected, not previous
}
没有颜色
红色//已选中此项
绿色//我会选择这个
蓝色
OnSpectChange=(事件)=>{
让prevVal=event.???//如何获取前一个值,即红色
让newVal=event.currentTarget.value;//绿色-是刚刚选择的新值,而不是以前的值
}
我的意思是,React是否在创建SyntheticEvent
时提供了这种开箱即用的功能?或者我还需要破解才能获得它吗?currentTarget
是浏览器支持的属性,它本身与React没有任何关系
SyntheticEvent
只是浏览器本机事件的包装,它公开某些浏览器事件
最接近你想要做的事情是,但它只是一个实验性的特性,只在Mozilla中实现
所以,回答你的问题:不,React不提供现成的功能。我不会说你需要一个黑客来获取你下拉菜单的前一个值
例如,您可以使用组件willreceiveprops
并将nextrops
与this.props
进行比较
如果我误解了你的问题,请提供更多细节。使用我们称之为“受控”输入
就你而言:
在构造函数中设置初始状态
constructor(props) {
super(props);
this.state = {dropdownValue: 'red'};
}
将select输入的值设置为存储在状态中的值
<select className="foo" onChange={this.onSectChange} value={this.state.dropdownValue}>
您可以使用React来实现这一点。状态将具有先前的值
类选择扩展了React.Component{
建造师(道具){
超级(道具)
此.state={
选择“红色”,
}
this.onspectchange=this.onspectchange.bind(this)
}
onSectChange(e){
var newVal=e.target.value
console.log(this.state.select,newVal)
这是我的国家({
选择:newVal,
})
}
render(){
返回
没有颜色
红色//已选中此项
绿色//我会选择这个
蓝色
}
}
ReactDOM.render(,document.getElementById('app'))
这存储在:e.target.defaultValue中。使用event.target.value将返回先前选择的值
onSectChange = (event) => {
// You haven't yet updated the state, so you still have access to the old value.
let prevVal = this.state.dropdownValue;
let newVal = event.currentTarget.value;
// You need to set the new value in your state so the component is
// rerendered to show the new value as selected
this.setState({dropdownValue: newVal});
}