123456789101112131415161718192021222324252627282930313233343536373839 |
- import { useMemo } from 'react';
-
- var toFnRef = function toFnRef(ref) {
- return !ref || typeof ref === 'function' ? ref : function (value) {
- ref.current = value;
- };
- };
-
- export function mergeRefs(refA, refB) {
- var a = toFnRef(refA);
- var b = toFnRef(refB);
- return function (value) {
- if (a) a(value);
- if (b) b(value);
- };
- }
- /**
- * Create and returns a single callback ref composed from two other Refs.
- *
- * ```tsx
- * const Button = React.forwardRef((props, ref) => {
- * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();
- * const mergedRef = useMergedRefs(ref, attachRef);
- *
- * return <button ref={mergedRef} {...props}/>
- * })
- * ```
- *
- * @param refA A Callback or mutable Ref
- * @param refB A Callback or mutable Ref
- */
-
- function useMergedRefs(refA, refB) {
- return useMemo(function () {
- return mergeRefs(refA, refB);
- }, [refA, refB]);
- }
-
- export default useMergedRefs;
|