UNPKG

@orca-fe/hooks

Version:

React Hooks Collections

28 lines 713 B
import { useEffect, useRef } from 'react'; import { useMemoizedFn } from 'ahooks'; export default function useInterval(callback, interval) { var callbackMemorizedFn = useMemoizedFn(callback); var ref = useRef(); var start = useMemoizedFn(() => { if (!ref.current && interval != null && interval > 0) { ref.current = window.setInterval(callbackMemorizedFn, interval); } }); var stop = useMemoizedFn(() => { if (ref.current) { window.clearInterval(ref.current); ref.current = undefined; } }); var reset = useMemoizedFn(() => { stop(); start(); }); useEffect(reset, [interval]); useEffect(() => stop, []); return { start, reset, stop }; }