UNPKG

reactuals

Version:

A useful package providing a collection of 50+ React hooks and utilities to simplify React development.

21 lines (20 loc) 746 B
import { useState, useEffect } from "react"; export function useIdleTimeout(timeout) { const [isIdle, setIsIdle] = useState(false); useEffect(() => { let timer; const resetTimer = () => { setIsIdle(false); clearTimeout(timer); timer = setTimeout(() => setIsIdle(true), timeout); }; const events = ["mousemove", "keydown", "touchstart", "click", "scroll"]; events.forEach((event) => window.addEventListener(event, resetTimer)); resetTimer(); // Initialize timer return () => { events.forEach((event) => window.removeEventListener(event, resetTimer)); clearTimeout(timer); }; }, [timeout]); return isIdle; }