react函数组件为了保持引用不变,很多时候需要借助useCallback
,但是useCallback
强依赖于外部变量,必须传个依赖变量,万一漏传了很容易出问题。比较函数复杂时较麻烦,使用这个即可完美解决,引用不变,调用肯定是最新的,并且不需依赖
just 记录方便cp
function usePersistCallback<T extends(...args: any[]) => any>(fn?: T) {
const ref = useRef<T>();
ref.current = fn;
return useCallback<T>(
// @ts-ignore
(...args) => {
const fn = ref.current;
return fn && fn(...args);
},
[ref],
);
}