UNPKG

@gdjiami/hooks

Version:

react hooks for mygzb.com

34 lines (33 loc) 1.22 kB
import { __read } from "tslib"; import { useState, useEffect } from 'react'; export default function useInterval(_a) { var startImmediate = _a.startImmediate, callback = _a.callback, duration = _a.duration; var _b = __read(useState(0), 2), count = _b[0], updateCount = _b[1]; var _c = __read(useState(startImmediate === undefined), 2), intervalState = _c[0], setIntervalState = _c[1]; var _d = __read(useState(null), 2), intervalId = _d[0], setIntervalId = _d[1]; useEffect(function () { if (intervalState) { var intervalId_1 = setInterval(function () { updateCount(count + 1); callback && callback(count); }, duration); setIntervalId(intervalId_1); } return function () { if (intervalId) { clearInterval(intervalId); setIntervalId(null); } }; }, [intervalState, count]); return { intervalId: intervalId, state: intervalState, start: function () { setIntervalState(true); }, stop: function () { setIntervalState(false); }, }; }