@orca-fe/hooks
Version:
React Hooks Collections
28 lines • 713 B
JavaScript
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
};
}