react usePersistFn
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 }