我正在查看formik中的代码,这显然是一种解决React钩子过时闭包问题的方法。
function useEventCallback<T extends (...args: any[]) => any>(fn: T): T {
const ref: any = React.useRef();
// we copy a ref to the callback scoped to the current state/props on each render
useIsomorphicLayoutEffect(() => {
ref.current = fn;
});
return React.useCallback(
(...args: any[]) => ref.current.apply(void 0, args),
[]
) as T;
}
我在其他库中经常看到这种模式,但我不明白为什么这可以治愈它。
我不明白为什么ref
在 a 中创建 a可以useEffect()
治愈任何事情。
它会使短绒棉静音吗?