UNPKG

@leafygreen-ui/hooks

Version:
26 lines (23 loc) 666 B
import * as React from 'react'; /** * Merges an array of refs into a single memoized callback ref or `null`. */ export function useMergeRefs<Instance>( refs: Array<React.Ref<Instance> | undefined>, ): React.RefCallback<Instance> | null { return React.useMemo(() => { if (refs.every(ref => ref == null)) { return null; } return value => { refs.forEach(ref => { if (typeof ref === 'function') { ref(value); } else if (ref != null) { (ref as React.MutableRefObject<Instance | null>).current = value; } }); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, refs); }