useMergedRef
Combina cualquier cantidad de refs de callback y de objeto en una sola, con la limpieza de refs de React 19 para cada una.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-merged-ref.jsonAñade el hook y todo lo que necesita a tu proyecto.
Copia y pega el siguiente código en tu proyecto.
hooks/use-merged-ref.ts Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
Un elemento tiene un solo ref, pero los componentes a menudo necesitan entregarlo a varios sitios: el padre que reenvió un ref, un ref local para efectos y hooks que trabajan mediante un ref de callback. useMergedRef devuelve un solo callback que alimenta a todos.
Cuando el elemento se adjunta, cada ref lo recibe. A los refs de objeto se les asigna .current, y a los refs de callback se les llama con el nodo. El callback combinado devuelve una limpieza al estilo de React 19. Al desvincular, ejecuta la limpieza propia de cada ref de callback, o llama al ref con null si no devolvió una, y restablece los refs de objeto a null.
Eso hace de los refs de callback un buen lugar para todo lo ligado a la vida del elemento, como observers y listeners. La configuración y el desmontaje viven juntos, y combinarlos con otros refs los mantiene funcionando.
- El callback combinado cambia siempre que cambia cualquier ref. Una función flecha en línea es un ref nuevo en cada renderizado, así que React desvincula y vuelve a vincular el elemento cada vez. Envuelve los refs de callback en
useCallback. - Los refs
undefinedynullse omiten, así que puedes pasar directamente props opcionales. - Para un ref reenviado más un ref de objeto local, useComposedRef es más corto.
| Prop | Tipo | Predeterminado |
|---|---|---|
...refsRefs de objeto, refs de callback o undefined. | Array<Ref<T> | undefined> | – |
| Devuelve | Descripción |
|---|---|
(node: T | null) => () => void | Pásalo al ref del elemento. Devuelve la limpieza combinada. |
Field e InputGroup.
- FieldEtiquetas, descripciones y errores conectados a su control, con estados de validación y diseños para formularios.
- InputUn campo de texto con tres tamaños, estados inválido y de solo lectura, estilos de validación nativos y una fuente táctil de 16px para que los móviles nunca hagan zoom.
- Input groupUn input con iconos, texto, botones o una pista de teclado acoplados, que comparten un solo borde y anillo de foco.
- Video playerUn reproductor de vídeo con barra de búsqueda arrastrable, controles que se ocultan solos, atajos de teclado, velocidad, imagen en imagen y pantalla completa.