@i-novus/ui-core
Version:
Базовые UI компоненты
19 lines (14 loc) • 506 B
text/typescript
/* eslint-disable no-param-reassign */
import { useEffect, useRef, ForwardedRef } from 'react'
export const useForwardedRef = <T extends HTMLElement | SVGElement>(ref: ForwardedRef<T>) => {
const internalRef = useRef<T>(null)
useEffect(() => {
if (!ref) { return }
if (typeof ref === 'function') {
ref(internalRef.current)
} else {
ref.current = internalRef.current
}
}, [ref, internalRef])
return internalRef
}