UNPKG

@momentum-ui/react-collaboration

Version:

Cisco Momentum UI Framework for React Collaboration Applications

30 lines (25 loc) 662 B
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; };