如何调用不同类型的函数,因为我有时想用事件对象调用它,有时用数组或除事件以外的任何其他东西调用它
const onChange = (e) => {
if( e is Event ) { // something like this
// do some stuff with e.target.value
} else { // different argument type
...
}
}
用事件对象调用它
<input type="text" onChange={ (e) => onChange(e) } />
使用不同的参数类型调用它
<input type="checkbox" onChange={ (e) => {
let newValues;
// do some calculation
...
onChange(newValues);
}}/>
...
好吧,如果你typeof e
在这两种情况下都这样做,你会得到object
一个响应,因为事件和数组都是 javascript 中的对象。
要检测对象是否是您拥有的数组Array.isArray()
。
并检测一个对象是否是一个 DOM 事件,你可以这样做e instanceof Event
。
在 reactjs 中,您必须将其更改为 e.nativeEvent instanceof Event
所以你可以做这样的事情:
const a = document.getElementById('test');
const onClick = (e) => {
// use (e.nativeEvent instanceof Event) in reactjs instead
if(e instanceof Event) {
// do some stuff with e.target.value
console.log("Response: I received an event");
} else if (Array.isArray(e)) { // it's an array
console.log("Response: I received an array");
}
}
a.addEventListener('click', onClick);
console.log('Call the method passing an array');
onClick([2,3,4]);
<div id='test'>click</div>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句