useMergedRef
Kombiniert beliebig viele Callback- und Objekt-Refs zu einem, mit React-19-Ref-Cleanup für jeden von ihnen.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-merged-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-merged-ref.ts Passe die Importpfade an dein Projekt-Setup an.
Ein Element hat eine ref, aber Komponenten müssen es oft an mehrere Stellen weitergeben: das Elternelement, das eine Ref weitergereicht hat, eine lokale Ref für Effects und Hooks, die über eine Callback-Ref arbeiten. useMergedRef gibt einen Callback zurück, der alle speist.
Wird das Element angehängt, erhält jede Ref es. Objekt-Refs bekommen .current gesetzt, und Callback-Refs werden mit dem Node aufgerufen. Der gemergte Callback gibt eine Cleanup-Funktion im Stil von React 19 zurück. Beim Lösen führt er die eigene Cleanup-Funktion jeder Callback-Ref aus oder ruft die Ref mit null auf, falls sie keine zurückgab, und setzt Objekt-Refs auf null zurück.
Damit sind Callback-Refs ein guter Ort für alles, was an die Lebensdauer des Elements gebunden ist, wie Observer und Listener. Setup und Teardown liegen zusammen, und das Mergen mit anderen Refs hält sie funktionsfähig.
- Der gemergte Callback ändert sich, sobald sich eine Ref ändert. Eine Inline-Arrow-Funktion ist bei jedem Render eine neue Ref, sodass React das Element jedes Mal löst und neu anhängt. Umschließe Callback-Refs mit
useCallback. - Refs, die
undefinedodernullsind, werden übersprungen, sodass du optionale Props direkt übergeben kannst. - Für eine weitergereichte Ref plus eine lokale Objekt-Ref ist useComposedRef kürzer.
| Prop | Typ | Standard |
|---|---|---|
...refsObjekt-Refs, Callback-Refs oder undefined. | Array<Ref<T> | undefined> | – |
| Rückgabe | Beschreibung |
|---|---|
(node: T | null) => () => void | An die Ref des Elements übergeben. Gibt die kombinierte Cleanup-Funktion zurück. |
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.
- Video playerEin Videoplayer mit scrubbarer Suchleiste, automatisch ausblendenden Steuerelementen, Tastenkürzeln, Geschwindigkeit, Bild-in-Bild und Vollbild.