我正在尝试区分onClick
函数中的左键单击和右键单击:
const App = () => {
const handleClick = (e) => {
// detect a left click
if (e.which == 1){
// do something
}
};
return <p onClick={handleClick}>Something</p>;
};
原来e.which
对于Synthetic Events是未定义的。我如何区分这里的左键和右键单击呢?
5条答案
按热度按时间vybvopom1#
在React(v16+)的现代版本中,需要传递
onClick
和onContextMenu
prop 来检测左键和右键单击事件:您可以检查
e.nativeEvent.button
(如另一个答案所示),也可以检查合成事件本身的e.type
。使用
e.type
使用
e.nativeEvent
下面是一个updated demo,演示了它的工作原理。
您可能还需要阅读SyntheticEvent的React文档。
gojuced72#
您正在寻找的物业是
e.button
或e.buttons
。触发鼠标事件时按下的按钮编号:左按钮=0,中按钮=1(如果存在),右按钮=2。
然而,不管有没有react,我只得到了鼠标左键(触控板)的点击事件。你可以使用onMouseDown,这对我很有效。
这是一个使用
e.buttons
的demo。您可能还想在onContextMenu中阻止默认设置。u4vypkhs3#
用途:
Here is a DEMO
nwsw7zdq4#
我在React's official documentation的“鼠标事件”部分找到了这个解决方案。
下面是onContextMenu的合成事件的TypeScript definition。
yjghlzjz5#
我用来区分左键和右键单击的方法是: