import { useRef, useState } from 'react'; import { useUnmount } from 'react-use'; /** Returns a boolean that is true for a given number of milliseconds. */ export function useTimedBoolean(millis = 1000): [boolean, () => void] { const [value, setValue] = useState(false); const timeout = useRef(null); const reset = () => timeout.current && clearTimeout(timeout.current); useUnmount(reset); const setToTrue = () => { setValue(true); reset(); timeout.current = setTimeout(() => setValue(false), millis); }; return [value, setToTrue]; }