@gdjiami/hooks
Version:
react hooks for mygzb.com
34 lines (33 loc) • 1.17 kB
JavaScript
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 };
}