@td-design/rn-hooks
Version:
从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率
28 lines (25 loc) • 849 B
JavaScript
import { useRef, useEffect } from 'react';
import { isNumber } from 'lodash-es';
import useMemoizedFn from '../useMemoizedFn/index.js';
function useInterval(fn, delay, options) {
var _a;
var immediate = (_a = options === null || options === void 0 ? void 0 : options.immediate) !== null && _a !== void 0 ? _a : false;
var timerCallback = useMemoizedFn(fn);
var timer = useRef();
useEffect(function () {
if (!isNumber(delay) || delay < 0)
return;
if (immediate) {
timerCallback();
}
timer.current = setInterval(timerCallback, delay);
return clear;
}, [delay, immediate]);
var clear = useMemoizedFn(function () {
if (timer.current) {
clearInterval(timer.current);
}
});
return clear;
}
export { useInterval as default };