useMergedRef
Combine un nombre quelconque de refs callback et objet en une seule, avec le nettoyage de ref de React 19 pour chacune.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-merged-ref.jsonAjoute le hook et tout ce dont il dépend à votre projet.
Copiez et collez le code suivant dans votre projet.
hooks/use-merged-ref.ts Mettez à jour les chemins d’import selon la configuration de votre projet.
Un élément n'a qu'une seule ref, mais les composants doivent souvent la confier à plusieurs endroits : le parent qui a transmis une ref, une ref locale pour les effets, et des hooks qui passent par une ref callback. useMergedRef renvoie un seul callback qui alimente toutes ces refs.
Quand l'élément s'attache, chaque ref le reçoit. Les refs objet voient leur .current défini, et les refs callback sont appelées avec le nœud. Le callback fusionné renvoie un nettoyage à la manière de React 19. Au détachement, il exécute le nettoyage propre à chaque ref callback, ou appelle la ref avec null si elle n'en a pas renvoyé, et remet les refs objet à null.
Les refs callback conviennent donc à tout ce qui est lié à la durée de vie de l'élément, comme les observateurs et les écouteurs. L'installation et le démontage vivent ensemble, et les fusionner avec d'autres refs les garde fonctionnels.
- Le callback fusionné change dès qu'une ref change. Une fonction fléchée en ligne est une nouvelle ref à chaque rendu : React détache et rattache donc l'élément à chaque fois. Enveloppez les refs callback dans
useCallback. - Les refs
undefinedetnullsont ignorées : vous pouvez donc passer directement des props facultatives. - Pour une ref transmise plus une ref objet locale, useComposedRef est plus court.
| Prop | Type | Par défaut |
|---|---|---|
...refsRefs objet, refs callback ou undefined. | Array<Ref<T> | undefined> | – |
| Valeur de retour | Description |
|---|---|
(node: T | null) => () => void | À passer à la ref de l'élément. Renvoie le nettoyage combiné. |
Field et InputGroup.
- FieldDes libellés, descriptions et erreurs reliés à leur contrôle, avec états de validation et mises en page pour les formulaires.
- InputUn champ de saisie texte en trois tailles, avec états invalide et lecture seule, style de validation natif et police tactile de 16px pour que les téléphones ne zooment jamais.
- Input groupUn champ de saisie avec icônes, texte, boutons ou indice clavier attachés, partageant une même bordure et un même anneau de focus.
- Video playerUn lecteur vidéo avec une barre de recherche déplaçable, des contrôles qui se masquent automatiquement, des raccourcis clavier, la vitesse, l'image dans l'image et le plein écran.