Reactで右クリックを扱う

Reactで右クリックを扱う

ReactにはonContextMenuが用意されているので楽です。

  render() {
    let onClick = (e, isRight?)=> {
      e.preventDefault();
      if(isRight){
        // 右クリック
      }else{
        // 左クリック
      }
    };

    return <div
      onClick={(e)=> onClick(e)}
      onContextMenu={(e)=> onClick(e, true)}>
      何か
    </div>
  }

ただしonMouseDownでは、左クリックも右クリックでもonMouseDownがよばれますので、こうします。

  render() {
    let onPress = (e)=> {
      let isRight = e.nativeEvent.which === 3;
      if(isRight){
        // 右クリック
      }else{
        // 左クリック
      }
    };

    return <div onMouseDown={(e)=> onPress(e)}>
      何か
    </div>
  }

まちがってonContextMenuとonMouseDownを組みあわせると、右クリックだけ複数回呼ばれることになります。