@taro-hooks/ahooks
Version:
31 lines (30 loc) • 967 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var core_1 = require("@taro-hooks/core");
var shared_1 = require("@taro-hooks/shared");
function useMemoizedFn(fn) {
if (process.env.NODE_ENV === 'development') {
if (!(0, shared_1.isFunction)(fn)) {
console.error("useMemoizedFn expected parameter is a function, got " + typeof fn);
}
}
var fnRef = (0, core_1.useRef)(fn);
// why not write `fnRef.current = fn`?
// https://github.com/alibaba/hooks/issues/728
fnRef.current = (0, core_1.useMemo)(function () {
return fn;
}, [fn]);
var memoizedFn = (0, core_1.useRef)();
if (!memoizedFn.current) {
memoizedFn.current = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return fnRef.current.apply(this, args);
};
}
return memoizedFn.current;
}
exports["default"] = useMemoizedFn;