createRef.js 620 B

123456789101112131415161718192021222324252627
  1. function createRef() {
  2. const func = node => {
  3. func.current = node;
  4. };
  5. return func;
  6. }
  7. export function fillRef(ref, node) {
  8. if (typeof ref === 'function') {
  9. ref(node);
  10. } else if (typeof ref === 'object' && ref && 'current' in ref) {
  11. ref.current = node;
  12. }
  13. }
  14. /**
  15. * Merge refs into one ref function to support ref passing.
  16. */
  17. export function composeRef() {
  18. for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
  19. refs[_key] = arguments[_key];
  20. }
  21. return node => {
  22. refs.forEach(ref => {
  23. fillRef(ref, node);
  24. });
  25. };
  26. }
  27. export default createRef;