LoginSignup
4
1

More than 1 year has passed since last update.

【小ネタ】double click と single click で別のメソッドを発火させる

Last updated at Posted at 2022-03-21

概要

onClick→single click
onDoubleClick→double click
としてoptionがあるのですが、両方を設定すると常にシングルクリックになってしまう課題の解消。

追記(2022/8/3)

コメント欄にさらにより良いコードが載っているので、活用される場合はそちらもご確認くださいmm

version

Screen Shot 2022-03-21 at 16.32.05.png

やりたいこと

  • 一つの要素でダブルクリックとシングルクリック(普通の左クリック)で別の判定をしたい
    例えばECサイトなどで、
    シングルクリック→商品を選択状態に(水色の枠でカードを囲むなど)
    ダブルクリック→商品詳細ページに遷移
    といったことを実装したい時のお話。

  • Reactで実装
    単にJavaScriptのお話なのですが、React触っているときに出たお話なので。
    調べるとクラス構文のものは見つけましたが、関数コンポーネントのものは見当たらなかったので。

実際のコード

export default function App() {
  const singleClick = () => {
    alert("single click");
    console.log("single click");
  };
  const doubleClick = () => {
    alert("double click");
    console.log("double click");
  };

  let clickCount = 0;
  const handleSingleOrDoubleClick = () => {
    clickCount++;
    if (clickCount < 2) {
      setTimeout(() => {
        if (1 < clickCount) {
          doubleClick();
        } else {
          singleClick();
        }
        clickCount = 0;
      }, 200);
    }
  };

  return (
    <div className="App">
      <div onClick={singleClick}>single</div>
      <div onDoubleClick={doubleClick}>double</div>
      <div onClick={singleClick} onDoubleClick={doubleClick}>
        NG
      </div>
      <div onClick={() => handleSingleOrDoubleClick()}>click here</div>
    </div>
  );
}

参考にさせて頂いた記事

4
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1