ahooks
Version:
react hooks library
28 lines (27 loc) • 1 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = require("react");
var _useUnmount = _interopRequireDefault(require("../useUnmount"));
function useRafState(initialState) {
var ref = (0, _react.useRef)(0);
var _useState = (0, _react.useState)(initialState),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
state = _useState2[0],
setState = _useState2[1];
var setRafState = (0, _react.useCallback)(function (value) {
cancelAnimationFrame(ref.current);
ref.current = requestAnimationFrame(function () {
setState(value);
});
}, []);
(0, _useUnmount["default"])(function () {
cancelAnimationFrame(ref.current);
});
return [state, setRafState];
}
var _default = exports["default"] = useRafState;