Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

48 строки
1.0 KiB

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