@taro-hooks/ahooks
Version:
26 lines • 844 B
JavaScript
import { useMemo, useRef } from '@taro-hooks/core';
import { isFunction } from '@taro-hooks/shared';
function useMemoizedFn(fn) {
if (process.env.NODE_ENV === 'development') {
if (!isFunction(fn)) {
console.error("useMemoizedFn expected parameter is a function, got " + typeof fn);
}
}
var fnRef = useRef(fn);
// why not write `fnRef.current = fn`?
// https://github.com/alibaba/hooks/issues/728
fnRef.current = useMemo(function () {
return fn;
}, [fn]);
var memoizedFn = 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;
}
export default useMemoizedFn;