UNPKG

@i-novus/ui-core

Version:

Базовые UI компоненты

25 lines (24 loc) 758 B
import { useMemo } from 'react'; function assignToRef(ref, node) { if (typeof ref === 'function') { ref(node); } else if (typeof ref === 'object' && ref && 'current' in ref) { // eslint-disable-next-line no-param-reassign ref.current = node; } } function mergeRefs(...refs) { return (node) => { refs.forEach((ref) => { assignToRef(ref, node); }); }; } /** * Хук для мержа рефов. Может быть использован для мержа внутреннего и forward рефов компонента */ export function useComposeRef(...refs) { // eslint-disable-next-line react-hooks/exhaustive-deps return useMemo(() => mergeRefs(...refs), refs); }