useMergedRef
Combina qualquer número de refs de callback e de objeto em uma só, com a limpeza de ref do React 19 para cada uma delas.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-merged-ref.jsonAdiciona o hook e tudo de que ele depende ao seu projeto.
Copie e cole o código a seguir no seu projeto.
hooks/use-merged-ref.ts Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Um elemento tem uma única ref, mas os componentes muitas vezes precisam repassá-lo a vários lugares: o pai que encaminhou uma ref, uma ref local para effects e hooks que funcionam por meio de uma ref de callback. useMergedRef retorna um único callback que alimenta todos eles.
Quando o elemento é anexado, toda ref o recebe. Refs de objeto têm .current definido, e refs de callback são chamadas com o nó. O callback mesclado retorna um cleanup no estilo do React 19. Ao desanexar, executa o cleanup de cada ref de callback, ou chama a ref com null se ela não retornou um, e redefine as refs de objeto para null.
Isso faz das refs de callback um bom lugar para tudo o que está ligado ao ciclo de vida do elemento, como observers e listeners. Configuração e desmontagem ficam juntas, e mesclá-las com outras refs as mantém funcionando.
- O callback mesclado muda sempre que qualquer ref muda. Uma arrow function inline é uma nova ref a cada renderização, então o React desanexa e reanexa o elemento todas as vezes. Envolva refs de callback em
useCallback. - Refs
undefinedenullsão ignoradas, então você pode passar props opcionais diretamente. - Para uma ref repassada mais uma ref de objeto local, useComposedRef é mais curto.
| Prop | Tipo | Padrão |
|---|---|---|
...refsRefs de objeto, refs de callback ou undefined. | Array<Ref<T> | undefined> | – |
| Retorna | Descrição |
|---|---|
(node: T | null) => () => void | Passe para a ref do elemento. Retorna o cleanup combinado. |
Field e InputGroup.
- FieldRótulos, descrições e erros ligados ao seu controle, com estados de validação e layouts para formulários.
- InputUm campo de texto com três tamanhos, estados inválido e somente leitura, estilo de validação nativa e fonte de 16px no toque para que os celulares nunca façam zoom.
- Input groupUm input com ícones, texto, botões ou uma dica de teclado anexados, compartilhando uma única borda e um único anel de foco.
- Video playerUm player de vídeo com barra de busca arrastável, controles que se ocultam sozinhos, atalhos de teclado, velocidade, picture in picture e tela cheia.