useComposedRef
Conserve une ref vers votre propre élément tout en la transmettant à la ref passée par le parent.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-composed-ref.jsonAjoute le hook et tout ce dont il dépend à votre projet.
Copiez et collez le code suivant dans votre projet.
hooks/use-composed-ref.ts Mettez à jour les chemins d’import selon la configuration de votre projet.
Dans React 19, ref est une prop ordinaire. Quand votre composant a aussi besoin de l'élément pour lui-même, vous avez deux refs et un seul attribut ref. Ce hook vous donne une ref objet à lire, plus un callback qui remplit les deux refs.
Cela compile, mais le ref du parent est perdu, et ref.current reste donc null chez le parent. Avec useComposedRef, le parent et le composant reçoivent tous deux l'élément.
- Le
inputRefrenvoyé est unRefObjectnormal : vous pouvez donc le passer à des hooks qui en attendent un, commeuseAutosizeouuseInvalidShake. setRefgarde la même identité tant que la ref du parent la garde, pour que React ne la détache ni ne la rattache à chaque rendu.- Fonctionne avec des refs objet, des refs callback, ou sans ref du tout.
Utilisez useComposedRef quand vous combinez exactement une ref transmise avec votre propre ref objet, ce qui est le cas de la plupart des composants. Utilisez useMergedRef quand vous en combinez plus de deux, quand l'une est une ref callback issue d'un autre hook, ou quand une ref callback transmise renvoie une fonction de nettoyage de React 19. useComposedRef appelle une ref callback avec null au détachement au lieu d'exécuter son nettoyage.
| Prop | Type | Par défaut |
|---|---|---|
refLa ref reçue par votre composant. | Ref<T> | undefined | – |
| Valeur de retour | Description |
|---|---|
[0] RefObject<T | null> | Votre propre ref vers l'élément. |
[1] (node: T | null) => void | À passer à la ref de l'élément. Remplit les deux refs. |
Input, Textarea, NativeSelect, 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.
- Native selectLe select natif du navigateur, stylé pour s’accorder à Input, avec un placeholder discret, la prise en charge de Field et le sélecteur du système sur chaque appareil.
- SidebarUne barre latérale d’application qui se réduit en icônes ou hors canevas, reste épinglée sous votre en-tête et devient une sheet balayable sur mobile.
- TextareaUn texte multiligne qui grandit en douceur selon ce que vous écrivez, entre un nombre minimal et maximal de lignes, avec compteurs, validation et raccourci d’envoi.