UNPKG

@darwish/hooks-core

Version:

26 lines (25 loc) 847 B
import { useCallback, useState, useRef } from 'react'; import useUnmount from './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 = useRef(0); var _a = useState(initialState), state = _a[0], setState = _a[1]; var setRafState = useCallback(function (value) { cancelAnimationFrame(frame.current); frame.current = window.requestAnimationFrame(function () { setState(value); }); }, []); useUnmount(function () { window.cancelAnimationFrame(frame.current); }); return [state, setRafState]; }; export default useRafState;