Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including use-double-click with all npm packages installed. Try it out:

require("react/package.json"); // react is a peer dependency. require("react-dom/package.json"); // react-dom is a peer dependency. var useDoubleClick = require("use-double-click")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

use-double-click v1.0.5

A simple React hook for differentiating single and double clicks on the same component.


npm NPM npm bundle size PRs Welcome Codecov Travis (.org)

use-double-click is a simple React hook for differentiating single and double clicks on the same component.

Check out the demo on Codesandbox

What's wrong with onDoubleClick()?

When you double click on an element, onClick() fires twice alongside your single onDoubleClick() callback. This effect isn't desirable when a single click and a double click have different functions!

useDoubleClick() waits within a latency window after a click for a secondary click, and only after this period either the onSingleClick or onDoubleClick() callback will fire a single time.


yarn add use-double-click


import { useRef } from 'react';
import useDoubleClick from 'use-double-click';

const Button = () => {
  const buttonRef = useRef();
    onSingleClick: e => {
      console.log(e, 'single click');
    onDoubleClick: e => {
      console.log(e, 'double click');
    ref: buttonRef,
    latency: 250
  return <button ref={buttonRef}>Click Me</button>


onSingleClickA callback function for single click events
onDoubleClickA callback function for double click events
refDom node to watch for double clicks
latencyThe amount of time (in milliseconds) to wait before differentiating a single from a double click


MIT © Tim Ellenberger

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free