UNPKG

react-use

Version:
29 lines (28 loc) 919 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); function useRafLoop(callback) { var raf = react_1.useRef(null); var _a = react_1.useState(true), isActive = _a[0], setIsActive = _a[1]; function loopStep() { callback(); raf.current = requestAnimationFrame(loopStep); } function loopStop() { setIsActive(false); } function loopStart() { setIsActive(true); } function clearCurrentLoop() { raf.current && cancelAnimationFrame(raf.current); } react_1.useEffect(function () { return clearCurrentLoop; }, []); react_1.useEffect(function () { clearCurrentLoop(); isActive && (raf.current = requestAnimationFrame(loopStep)); return clearCurrentLoop; }, [isActive, callback]); return [loopStop, isActive, loopStart]; } exports.default = useRafLoop;