useLongPress

React sensor hook that fires a callback after long pressing.

Usage

import { useLongPress } from "@reactuses/core";
import { useState } from "react";

const Demo = () => {
  const [state, setState] = useState("No Press");
  const onLongPress = () => {
    setState("Long Pressed!");
  };

  const defaultOptions = {
    isPreventDefault: true,
    delay: 300,
  };
  const longPressEvent = useLongPress(onLongPress, defaultOptions);

  return (
    <div>
      <button {...longPressEvent}>useLongPress</button>
      <button onClick={() => setState("No Press")}>Reset</button>
      <div>Pressed: {state}</div>
    </div>
  );
};

Example

Pressed: No Press

Type Declarations

export interface UseLongPressOptions {
  isPreventDefault?: boolean
  delay?: number
}
export default function useLongPress(
  callback: (e: TouchEvent | MouseEvent) => void,
  { isPreventDefault, delay }?: UseLongPressOptions
): {
  readonly onMouseDown: (e: any) => void
  readonly onTouchStart: (e: any) => void
  readonly onMouseUp: () => void
  readonly onMouseLeave: () => void
  readonly onTouchEnd: () => void
}