@momentum-ui/react-collaboration
Version:
Cisco Momentum UI Framework for React Collaboration Applications
30 lines (25 loc) • 662 B
text/typescript
import React, { useRef, useLayoutEffect } from 'react';
/**
* Utility hook to merge provided with internal ref.
* It works with both callback refs and normal object ref.
* @param providedRef
* @param initialValue
* @returns
*/
export const useProvidedRef = <T>(
providedRef: React.ForwardedRef<T>,
initialValue: T = null
): React.MutableRefObject<T> => {
let ref = useRef<T>(initialValue);
if (providedRef && typeof providedRef !== 'function') {
ref = providedRef;
}
useLayoutEffect(() => {
if (providedRef) {
if (typeof providedRef === 'function') {
providedRef(ref.current);
}
}
}, []);
return ref;
};