UNPKG

@gdjiami/hooks

Version:

react hooks for mygzb.com

34 lines (33 loc) 1.17 kB
import { __read } from "tslib"; import { useEffect, useCallback, useState } from 'react'; import useInstance from './useInstance'; export default function useTimeout(options) { if (options === void 0) { options = {}; } var _a = __read(useState(false), 2), ready = _a[0], setReady = _a[1]; var _b = __read(useInstance({}), 1), state = _b[0]; var start = useCallback(function () { if (state.unmounted) { return; } setReady(false); window.clearTimeout(state.timer); state.timer = window.setTimeout(function () { setReady(true); options.callback && options.callback(); }, options.duration); }, [options.callback, options.duration]); var stop = useCallback(function () { setReady(false); window.clearTimeout(state.timer); }, []); useEffect(function () { if (options.startOnMount) { start(); } return function () { window.clearTimeout(state.timer); state.unmounted = true; }; }, []); return { start: start, stop: stop, ready: ready }; }