12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.useCallbackRef = void 0;
- var react_1 = require("react");
- /**
- * creates a MutableRef with ref change callback
- * @param initialValue - initial ref value
- * @param {Function} callback - a callback to run when value changes
- *
- * @example
- * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);
- * ref.current = 1;
- * // prints 0 -> 1
- *
- * @see https://reactjs.org/docs/hooks-reference.html#useref
- * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref
- * @returns {MutableRefObject}
- */
- function useCallbackRef(initialValue, callback) {
- var ref = (0, react_1.useState)(function () { return ({
- // value
- value: initialValue,
- // last callback
- callback: callback,
- // "memoized" public interface
- facade: {
- get current() {
- return ref.value;
- },
- set current(value) {
- var last = ref.value;
- if (last !== value) {
- ref.value = value;
- ref.callback(value, last);
- }
- },
- },
- }); })[0];
- // update callback
- ref.callback = callback;
- return ref.facade;
- }
- exports.useCallbackRef = useCallbackRef;
|