react-native-reanimated
Version:
More powerful alternative to Animated library for React Native.
36 lines (30 loc) • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useFrameCallback = useFrameCallback;
var _react = require("react");
var _FrameCallbackRegistryJS = _interopRequireDefault(require("../frameCallback/FrameCallbackRegistryJS"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const frameCallbackRegistry = new _FrameCallbackRegistryJS.default();
function useFrameCallback(callback) {
let autostart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
const ref = (0, _react.useRef)({
setActive: isActive => {
frameCallbackRegistry.manageStateFrameCallback(ref.current.callbackId, isActive);
ref.current.isActive = isActive;
},
isActive: autostart,
callbackId: -1
});
(0, _react.useEffect)(() => {
ref.current.callbackId = frameCallbackRegistry.registerFrameCallback(callback);
ref.current.setActive(ref.current.isActive);
return () => {
frameCallbackRegistry.unregisterFrameCallback(ref.current.callbackId);
ref.current.callbackId = -1;
};
}, [callback, autostart]);
return ref.current;
}
//# sourceMappingURL=useFrameCallback.js.map