Как предотвратить срабатывание одного клика при двойном щелчке без setTimeout - PullRequest
0 голосов
/ 19 февраля 2019

Есть похожие вопросы о переполнении стека, но я не нашел правильного решения.

В случае двойного щелчка я не хочу, чтобы была активирована функция одного щелчка, и я бы хотелнравится архивировать это без jQuery и setTimeout.

Этого можно добиться с помощью setTimeout, но затем событие перемещения мыши блокируется на время задержки.

Код: https://codesandbox.io/s/vnrk3xk115

mouseDown = (e) => {
    // Case 1
    // In the case of double clicks, a single click will still trigger. 
    if (e.detail === 1) {
      console.log('Single Click');
    } else if (e.detail === 2) {
      console.log('Double Click');
    }

    // Case 2
    // In the case, I can't use mouse move for 250ms
    let timeoutID = null;

    if (!timeoutID) {
      timeoutID = setTimeout(() => {
        console.log('Single Click');
        timeoutID = null;
      }, 250);
    } else {
      timeoutID = clearTimeout(timeoutID);
      console.log('Double Click');
    }
  }

  mouseMove = () => {
    // Mouse move is blocked for 250ms
  } 

1 Ответ

0 голосов
/ 19 февраля 2019

Я думаю, что setTimeout необходим, но вы можете использовать его по-другому.Отметьте вашу функцию для щелчка, а затем используйте тайм-аут, чтобы сбросить ее, чтобы избежать двойного щелчка.

Пожалуйста, посмотрите на следующее: https://codesandbox.io/s/73n357xx36

Если я правильно понял идею, это должно соответствовать вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...