UNPKG

@gdjiami/hooks

Version:

react hooks for mygzb.com

46 lines (41 loc) 1.06 kB
import { useEffect, useCallback, useState } from 'react'; import useInstance from './useInstance'; export default function useTimeout(options) { if (options === void 0) { options = {}; } var _useState = useState(false), ready = _useState[0], setReady = _useState[1]; var _useInstance = useInstance({}), state = _useInstance[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 }; }