OnClick関数で左クリックと右クリックを区別しようとしています。だが、
var r = React.createClass({
handleClick : function(e){
//left click
if(e.which==1){
//Do something
}
},
render : function(){
return <p onClick={this.handleClick}>Something </p>
}
});
Synthetic Eventsでは未定義のe。が判明します。ここで左クリックと右クリックを区別するにはどうすればよいですか?
このようなこともできます。 onClickハンドラーとonContextMenuハンドラーの両方がある
return <p onClick={this.handleClick} onContextMenu={this.handleClick}>Something </p>
他の答えが示唆するようにnativeEvent
を確認するか、type
を確認することができます。 (また、右クリックの場合はデフォルトを禁止します。)
type
を使用する
handleClick: function(e) {
if (e.type === 'click') {
console.log('Left click');
} else if (e.type === 'contextmenu') {
console.log('Right click');
}
}
nativeEvent
を使用する
handleClick: function(e) {
if (e.nativeEvent.which === 1) {
console.log('Left click');
} else if (e.nativeEvent.which === 3) {
console.log('Right click');
}
}
お探しのプロパティはe.button
またはe.buttons
。
マウスイベントが発生したときに押されたボタン番号:左ボタン= 0、中央ボタン= 1(存在する場合)、右ボタン= 2。
– MDN:Web/Events/click
ただし、反応の有無にかかわらず、クリックイベントはマウスの左ボタン(トラックパッド)でのみ発生します。私に役立つonMouseDownを使用できます。
これは デモ を使用したe.buttons
。 onContextMenuでDefaultを防ぐこともできます。
使用する:
if (e.button === 0) { // or e.nativeEvent.which === 1
// do something on left click
}