fp/services/next/app/lib/useForwardRef.ts

27 lines
518 B
TypeScript
Raw Normal View History

2024-01-20 16:16:14 +00:00
/**
2024-12-12 07:23:46 +00:00
* @see https://github.com/facebook/react/issues/24722#issue-1270749463
2024-01-20 16:16:14 +00:00
*/
import React, { useEffect, useRef, type ForwardedRef } from 'react';
const useForwardRef = <T,>(
ref: ForwardedRef<T>,
initialValue: any = null
) => {
const targetRef = useRef<T>(initialValue);
useEffect(() => {
if (!ref) return;
if (typeof ref === 'function') {
ref(targetRef.current);
} else {
ref.current = targetRef.current;
}
}, [ref]);
return targetRef;
};
export default useForwardRef