UNPKG

@gdjiami/hooks

Version:

react hooks for mygzb.com

37 lines (36 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var react_1 = require("react"); var useInstance_1 = tslib_1.__importDefault(require("./useInstance")); function useTimeout(options) { if (options === void 0) { options = {}; } var _a = tslib_1.__read(react_1.useState(false), 2), ready = _a[0], setReady = _a[1]; var _b = tslib_1.__read(useInstance_1.default({}), 1), state = _b[0]; var start = react_1.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 = react_1.useCallback(function () { setReady(false); window.clearTimeout(state.timer); }, []); react_1.useEffect(function () { if (options.startOnMount) { start(); } return function () { window.clearTimeout(state.timer); state.unmounted = true; }; }, []); return { start: start, stop: stop, ready: ready }; } exports.default = useTimeout;