useComposedRef
Behält eine Ref auf dein eigenes Element und leitet sie trotzdem an die Ref weiter, die der Parent übergeben hat.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-composed-ref.jsonFügt den Hook und alles, wovon er abhängt, zu deinem Projekt hinzu.
Kopiere den folgenden Code und füge ihn in dein Projekt ein.
hooks/use-composed-ref.ts Passe die Importpfade an dein Projekt-Setup an.
In React 19 ist ref eine normale Prop. Braucht deine Komponente das Element auch für sich selbst, hast du zwei Refs und nur ein ref-Attribut. Dieser Hook gibt dir eine Objekt-Ref zum Lesen sowie einen Callback, der beide Refs füllt.
Das kompiliert, aber die ref des Elternelements geht verloren, sodass ref.current im Elternelement null bleibt. Mit useComposedRef erhalten sowohl das Elternelement als auch die Komponente das Element.
- Die zurückgegebene
inputRefist eine normaleRefObject, sodass du sie an Hooks übergeben kannst, die eine erwarten, etwauseAutosizeoderuseInvalidShake. setRefbehält dieselbe Identität, solange die Ref des Elternelements sie behält, sodass React sie nicht bei jedem Render löst und neu anhängt.- Funktioniert mit Objekt-Refs, Callback-Refs und ganz ohne Ref.
Nutze useComposedRef, wenn du genau eine weitergereichte Ref mit deiner eigenen Objekt-Ref kombinierst, was bei den meisten Komponenten der Fall ist. Nutze useMergedRef, wenn du mehr als zwei kombinierst, wenn eine davon eine Callback-Ref aus einem anderen Hook ist oder wenn eine weitergereichte Callback-Ref eine React-19-Cleanup-Funktion zurückgibt. useComposedRef ruft eine Callback-Ref beim Lösen mit null auf, statt ihre Cleanup-Funktion auszuführen.
| Prop | Typ | Standard |
|---|---|---|
refDie Ref, die deine Komponente erhalten hat. | Ref<T> | undefined | – |
| Rückgabe | Beschreibung |
|---|---|
[0] RefObject<T | null> | Deine eigene Ref auf das Element. |
[1] (node: T | null) => void | An die Ref des Elements übergeben. Füllt beide Refs. |
Input, Textarea, NativeSelect, Field und InputGroup.
- FieldLabels, Beschreibungen und Fehler, mit ihrem Steuerelement verbunden, mit Validierungszuständen und Layouts für Formulare.
- InputEin Texteingabefeld mit drei Größen, ungültigen und schreibgeschützten Zuständen, nativem Validierungsstyling und einer 16-px-Schrift für Touch, damit Smartphones nie hineinzoomen.
- Input groupEin Input mit angehängten Icons, Text, Buttons oder Tastaturhinweis, die sich einen Rahmen und einen Fokusring teilen.
- Native selectDas native Select des Browsers, passend zu Input gestylt, mit dezentem Platzhalter, Field-Unterstützung und dem Picker des Betriebssystems auf jedem Gerät.
- SidebarEine App-Seitenleiste, die zu Icons oder off-canvas einklappt, unter deinem Header fixiert bleibt und auf Smartphones zu einem wischbaren Sheet wird.
- TextareaMehrzeiliger Text, der mit dem Geschriebenen zwischen einer minimalen und maximalen Zeilenzahl sanft wächst, mit Zählern, Validierung und Absende-Tastenkürzel.