18 lines
592 B
JavaScript
18 lines
592 B
JavaScript
import { useCallback, useRef, useState } from 'react';
|
|
import useUnmount from './useUnmount';
|
|
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 = requestAnimationFrame(function () {
|
|
setState(value);
|
|
});
|
|
}, []);
|
|
useUnmount(function () {
|
|
cancelAnimationFrame(frame.current);
|
|
});
|
|
return [state, setRafState];
|
|
};
|
|
export default useRafState;
|