Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取<;选择>;你有什么反应?_Javascript_Reactjs_Drop Down Menu - Fatal编程技术网

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});
}