UNPKG

@huse/effect-ref

Version:

--- title: README nav: title: Hooks path: /hook group: title: Effect Ref path: /effect-ref order: 1 ---

28 lines 1.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useEffectRef = void 0; const react_1 = require("react"); // eslint-disable-next-line @typescript-eslint/no-empty-function const noop = () => { }; function useEffectRef(callback) { const disposeRef = react_1.useRef(noop); const effect = react_1.useCallback((element) => { disposeRef.current(); // To ensure every dispose function is called only once. disposeRef.current = noop; if (element) { const dispose = callback(element); if (typeof dispose === 'function') { disposeRef.current = dispose; } // Have an extra type check to work with javascript. else if (dispose !== undefined) { // eslint-disable-next-line no-console console.warn('Effect ref callback must return undefined or a dispose function'); } } }, [callback]); return effect; } exports.useEffectRef = useEffectRef; //# sourceMappingURL=index.js.map