ReactJS - 即使从选择下拉列表中选择了相同的选项也会触发事件

IT技术 javascript html reactjs events onchange
2021-04-27 11:02:50

当从 ReactJS 的下拉列表中选择一个选项时,如何触发事件。目前我正在使用,onChange但即使再次选择相同的选项,我也需要触发一个事件。

当前代码:

<select name="select1" onChange={this.onChangeOption}>
    <option value='A'>Please select A...</option>
    <option value='B'>Please select B...</option>
    <option value='C'>Please select C...</option>
    <option value='D'>Please select D...</option>
</select>

我什至尝试向onClick选项添加处理程序,但这不会在单击选项时触发,因为它仅适用于元素。

我知道有通过将单击事件与选项元素绑定来使用 jquery 的解决方案,但需要在 React 中找到解决方案。不想仅针对此要求包含 jQuery。

3个回答

这是技巧,但如果您需要使用所有更改来触发函数,即使更改相同选项,我只知道一个解决方案 - 使用 onClick 及其详细信息:

class Select extends React.Component{
    onChangeOption(e){
        if (e.detail === 0){
            console.log(e.target.value);
        }
    }
    render(){
        return (
            <select name="select1" onClick={this.onChangeOption}>
                <option value='A'>Please select A...</option>
                <option value='B'>Please select B...</option>
                <option value='C'>Please select C...</option>
                <option value='D'>Please select D...</option>
            </select>
        )
    }
}

https://jsfiddle.net/69z2wepo/86140/

你可以通过使用 ReactJS 提供的 onClick 事件来实现

<select 
  name="select1"
  onChange={(e) => {
   // Do not use onChange method, for your use case
   console.log('event value', e.target.value);
   console.log('event name', e.target.name);
  }}
  onClick={(e) => {
    // Use onClick method, for your use case
    console.log('XX event value', e.target.value);
    console.log('XX event name', e.target.name);
  }}
>
  <option value='A'>Please select A...</option>
  <option value='B'>Please select B...</option>
  <option value='C'>Please select C...</option>
  <option value='D'>Please select D...</option>
</select>

onChange顾名思义,只有在之前的值select不等于提供给它的新值时才会触发但是在您的情况下,即使选择了相同的值,您也希望触发更改事件。您需要使用onClick我在上面代码中演示方法。每次单击选择标签时都会触发。

我希望这有帮助。干杯

希望这能解决您的问题,因为我们在 javascript 中没有任何默认设置。只是一个解决办法。最好不要在每次触发 onclick 时调用回调函数来进行数学运算。

let a = 0; //temporary variable - not requred until its particular
let onChangeOption = ()=>{
a = a+1; //not requred until its particular
if(a%2 == 0){// not requred until its particular
console.log("triggered ")
}
}
<select name="select1"  onclick="onChangeOption()">
    <option value='A'>Please select A...</option>
    <option value='B'>Please select B...</option>
    <option value='C'>Please select C...</option>
    <option value='D'>Please select D...</option>
</select>