React Synthetic Event distinguish Left and Right click events

后端 未结 3 1322
清歌不尽
清歌不尽 2020-12-14 14:48

I am trying to distinguish between left and right clicks in an OnClick function. But,

var r = React.createClass({
   handleClick : function(e){
       //left         


        
相关标签:
3条回答
  • 2020-12-14 15:34

    The property you're looking for is e.button or e.buttons.

    The button number that was pressed when the mouse event was fired: Left button=0, middle button=1 (if present), right button=2.
    – MDN:Web/Events/click

    However, with or without react, I'm only getting click events with the left mouse button (trackpad). You could use onMouseDown which works for me.

    Here's a demo using e.buttons. You may want to preventDefault in onContextMenu also.

    0 讨论(0)
  • 2020-12-14 15:34

    Use:

    if (e.button === 0) { // or e.nativeEvent.which === 1
        // do something on left click
    }
    

    Here is a DEMO

    0 讨论(0)
  • 2020-12-14 15:44

    You can do something like this too. Have both onClick and onContextMenu handlers

    return <p onClick={this.handleClick} onContextMenu={this.handleClick}>Something </p>
    

    You can either check for nativeEvent as the other answer suggests or check for type. (Also, prevent default if it is a right click.)

    Using type

    handleClick: function(e) {
      if (e.type === 'click') {
        console.log('Left click');
      } else if (e.type === 'contextmenu') {
        console.log('Right click');
      }
    }
    

    Using nativeEvent

    handleClick: function(e) {
      if (e.nativeEvent.which === 1) {
        console.log('Left click');
      } else if (e.nativeEvent.which === 3) {
        console.log('Right click');
      }
    }
    

    Here is a demo http://jsbin.com/seyeliv/edit?html,output

    0 讨论(0)
提交回复
热议问题