Published on

useLongpress Hook React

useLongpress Hook React

useLongpress Hook React

useLongpress Code and Usage

useLongpress is a hook to detect a long press action.

import { useState, useEffect } from "react";

const useLongPress = (callback, duration = 500) => {
  const [isPressed, setIsPressed] = useState(false);

  useEffect(() => {
    let timer;
    if (isPressed) {
      timer = setTimeout(callback, duration);
    } else {
      clearTimeout(timer);
    }

    return () => {
      clearTimeout(timer);
    };
  }, [isPressed, callback, duration]);

  return {
    onMouseDown: () => setIsPressed(true),
    onMouseUp: () => setIsPressed(false),
    onMouseLeave: () => setIsPressed(false),
    onTouchStart: () => setIsPressed(true),
    onTouchEnd: () => setIsPressed(false),
  };
};

// Usage
const LongPressExample = () => {
  const handleLongPress = () => {
    console.log("Long press detected.");
  };

  const longPressProps = useLongPress(handleLongPress);

  return (
    <div>
      <button {...longPressProps}>Long Press Me</button>
    </div>
  );
};

Previous Article