UNPKG

@darwish/hooks-core

Version:

31 lines (30 loc) 1.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var useUnmount_1 = __importDefault(require("./useUnmount")); /** * @description 用 requestAnimationFrame 来更新 state * @param initialState initial state * @returns [state, setState] * @example * const [state, setState] = useRafState(0); * const [state, setState] = useRafState(() => 0); */ var useRafState = function (initialState) { var frame = (0, react_1.useRef)(0); var _a = (0, react_1.useState)(initialState), state = _a[0], setState = _a[1]; var setRafState = (0, react_1.useCallback)(function (value) { cancelAnimationFrame(frame.current); frame.current = window.requestAnimationFrame(function () { setState(value); }); }, []); (0, useUnmount_1.default)(function () { window.cancelAnimationFrame(frame.current); }); return [state, setRafState]; }; exports.default = useRafState;