Files
react-training/hotel-management/src/hooks/useForwardRef.ts
T
2023-11-05 18:28:51 +07:00

26 lines
484 B
TypeScript

import { ForwardedRef, useEffect, useRef } from 'react';
// Types
import { Nullable } from '../globals/types';
const useForwardRef = <T>(
ref: ForwardedRef<T>,
initialValue: Nullable<T> = 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 { useForwardRef };