Réaction événement synthétique distinguer les événements de clic droit et gauche

j'essaie de distinguer entre les clics de gauche et de droite dans une fonction OnClick. Mais,

var r = React.createClass({
   handleClick : function(e){
       //left click
       if(e.which==1){ 
          //Do something
       }
   },
   render : function(){
       return <p onClick={this.handleClick}>Something </p>
   }
});
<!-Il S'avère que E. ce qui n'est pas défini pour les événements synthétiques. Comment faire la différence entre les clics de gauche et de droite?

19
demandé sur Bhargav Ponnapalli 2015-06-29 10:36:29

3 réponses

Vous pouvez faire quelque chose comme cela aussi. Avoir à la fois onClick et onContextMenu handlers

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

Vous pouvez vérifier nativeEvent comme l'autre réponse suggère ou vérifier type. (Aussi, de prévenir par défaut si c'est un clic droit.)

en utilisant type

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

en utilisant nativeEvent

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

Voici une démo http://jsbin.com/seyeliv/edit?html,sortie

26
répondu Dhiraj 2017-11-05 02:04:21

La propriété que vous recherchez est e.button ou e.buttons.

le numéro du bouton qui a été pressé lorsque l'événement de la souris a été tiré: bouton gauche=0, bouton du milieu=1 (si présent), bouton droit=2.

-MDN:Web/Événements/cliquez sur

cependant, avec ou sans react, Je n'obtiens que des clics avec le bouton gauche de la souris (trackpad). Tu pourrais utiliser une robe à souris qui marche pour moi.

Voici un démo en utilisant e.buttons. Vous pouvez vouloir prévenir le défaut dans onContextMenu aussi.

11
répondu FakeRainBrigand 2015-06-29 10:12:28

Utilisation:

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

Voici une démo

1
répondu marcel 2015-06-29 10:14:22