No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

40 líneas
939 B

  1. import { useMemo } from 'react';
  2. var toFnRef = function toFnRef(ref) {
  3. return !ref || typeof ref === 'function' ? ref : function (value) {
  4. ref.current = value;
  5. };
  6. };
  7. export function mergeRefs(refA, refB) {
  8. var a = toFnRef(refA);
  9. var b = toFnRef(refB);
  10. return function (value) {
  11. if (a) a(value);
  12. if (b) b(value);
  13. };
  14. }
  15. /**
  16. * Create and returns a single callback ref composed from two other Refs.
  17. *
  18. * ```tsx
  19. * const Button = React.forwardRef((props, ref) => {
  20. * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();
  21. * const mergedRef = useMergedRefs(ref, attachRef);
  22. *
  23. * return <button ref={mergedRef} {...props}/>
  24. * })
  25. * ```
  26. *
  27. * @param refA A Callback or mutable Ref
  28. * @param refB A Callback or mutable Ref
  29. * @category refs
  30. */
  31. function useMergedRefs(refA, refB) {
  32. return useMemo(function () {
  33. return mergeRefs(refA, refB);
  34. }, [refA, refB]);
  35. }
  36. export default useMergedRefs;