import {useRef,} from 'react';
function usePersistFn(fn) {
const fnRef = useRef(fn);
fnRef.current = fn;
const persistFn = useRef();
if (!persistFn.current) {
persistFn.current = function (...args) {
return fnRef.current.apply(this, args);
}
}
return persistFn.current;
}
export {
usePersistFn
}
import {useCallback, useRef} from 'react';
import {shallowEqual} from "../utils/shallowEqual";
function usePersistFn(fn: any) {
const fnRef = useRef(fn);
fnRef.current = fn;
return useCallback((...params: any) => {
return fnRef.current(...params);
}, []);
}
function usePersistFn2(fn: any, checkParams: boolean = false) {
const preParamsRef = useRef(null);
const fnRef = useRef(fn);
fnRef.current = fn;
return useCallback((params: any) => {
if (checkParams && shallowEqual(preParamsRef.current, params)) {
return;
}
preParamsRef.current = params;
return fnRef.current(params);
}, []);
}
export {
usePersistFn,
usePersistFn2
}