UNPKG

ahooks

Version:
18 lines (17 loc) 547 B
import { useCallback, useRef, useState } from 'react'; import useUnmount from '../useUnmount'; function useRafState(initialState) { const ref = useRef(0); const [state, setState] = useState(initialState); const setRafState = useCallback((value) => { cancelAnimationFrame(ref.current); ref.current = requestAnimationFrame(() => { setState(value); }); }, []); useUnmount(() => { cancelAnimationFrame(ref.current); }); return [state, setRafState]; } export default useRafState;