UNPKG

@gdjiami/hooks

Version:

react hooks for mygzb.com

46 lines (40 loc) 1.13 kB
import { useState, useEffect } from 'react'; export default function useInterval(_ref) { var startImmediate = _ref.startImmediate, callback = _ref.callback, duration = _ref.duration; var _useState = useState(0), count = _useState[0], updateCount = _useState[1]; var _useState2 = useState(startImmediate === undefined), intervalState = _useState2[0], setIntervalState = _useState2[1]; var _useState3 = useState(null), intervalId = _useState3[0], setIntervalId = _useState3[1]; useEffect(function () { if (intervalState) { var _intervalId = setInterval(function () { updateCount(count + 1); callback && callback(count); }, duration); setIntervalId(_intervalId); } return function () { if (intervalId) { clearInterval(intervalId); setIntervalId(null); } }; }, [intervalState, count]); return { intervalId: intervalId, state: intervalState, start: function start() { setIntervalState(true); }, stop: function stop() { setIntervalState(false); } }; }