ReactJS - Forwarding Refs: A Beginner's Guide

Hallo zusammen, zukünftige React-Zauberer! Heute machen wir uns auf eine aufregende Reise in die Welt von React und erkunden ein Konzept namens "Forwarding Refs." Keine Sorge, wenn du neu im Programmieren bist; ich werde dein freundlicher Guide sein, und wir gehen das Schritt für Schritt durch. Am Ende dieses Tutorials wirst duRefs wie ein Profi weiterleiten!

ReactJS - Forwarding Refs

Was sind Refs und warum müssen wir sie weiterleiten?

Bevor wir uns dem Forwarding von Refs widmen, lassen wir uns überRefs selbst unterhalten. Stell dir vor, du baust ein Haus (was ein bisschen so ist, wie wir Webanwendungen erstellen). Manchmal musst du direkt auf einen bestimmten Teil des Hauses zugreifen oder ihn manipulieren. In React sindRefs wie spezielle Werkzeuge, die uns das mit unseren Komponenten ermöglichen.

Das Forwarding von Refs ist so, als ob wir diese speziellen Werkzeuge durch verschiedene Räume unseres Hauses weiterreichen. Es ist eine Technik, die es uns ermöglicht, einen Ref durch eine Komponente an eines ihrer Kinder zu senden. Dies ist besonders nützlich, wenn wir mit wiederverwendbaren Komponentenbibliotheken arbeiten.

Die forwardRef-Methode: Unser Zauberstab

React stellt uns eine Methode namens forwardRef zur Verfügung, die dieses Ref-Forwarding ermöglicht. Denke daran als einen Zauberstab, der unsere Komponenten in die Lage versetzt, einen Ref entgegenzunehmen und ihn weiterzuleiten.

Signatur der forwardRef-Methode

Schauen wir uns an, wie wir diesen Zauberstab verwenden:

const ForwardedComponent = React.forwardRef((props, ref) => {
// Componentenlogik hier
});

Das mag initially etwas einschüchternd aussehen, aber lassen wir es auseinanderfallen:

  1. Wir erstellen eine neue Komponente und weisen sie ForwardedComponent zu.
  2. Wir verwenden React.forwardRef(), um unsere Komponentenfunktion zu包裹.
  3. Unsere Komponentenfunktion nimmt jetzt zwei Parameter an: props (mit dem wir vertraut sind) und ref (unser neuer Freund).

Anwendung von forwardRef in einer Komponente

Nun sehen wir, wie wir dies in einer realen Welt-Szenario anwenden können. Stellen wir uns vor, wir erstellen ein benutzerdefiniertes Eingabeaufforderungskomponente, die wir überall in unserer Anwendung verwenden möchten.

import React from 'react';

const FancyInput = React.forwardRef((props, ref) => {
return <input ref={ref} {...props} style={{border: '2px solid purple'}} />;
});

export default FancyInput;

Lassen wir das auseinanderfallen:

  1. Wir importieren React (immer wichtig!).
  2. Wir erstellen unsere FancyInput-Komponente mit React.forwardRef.
  3. Innerhalb unserer Komponente geben wir ein <input>-Element zurück.
  4. Wir übergeben den ref an unser <input>-Element über das ref-Attribut.
  5. Wir verteilen die props auf unser <input>, damit es jede Prop annehmen kann, die wir FancyInput übergeben.
  6. Wir fügen ein kleines Styling hinzu, um unsere Eingabe hübsch zu gestalten (wer mag eine lila Umrandung?).

Nun können wir unseren FancyInput-Komponenten an elsewhere in unserer Anwendung verwenden und einen Ref daran anhängen, und dieser Ref wird tatsächlich an das unterliegende <input>-Element angehängt.

So könnten wir unseren neuen Komponenten verwenden:

import React, { useRef, useEffect } from 'react';
import FancyInput from './FancyInput';

function App() {
const inputRef = useRef(null);

useEffect(() => {
inputRef.current.focus();
}, []);

return (
<div>
<FancyInput ref={inputRef} placeholder="Gib etwas Schickes ein..." />
</div>
);
}

In diesem Beispiel:

  1. Wir erstellen einen Ref mit useRef.
  2. Wir übergeben diesen Ref an unsere FancyInput-Komponente.
  3. Im useEffect-Hook verwenden wir den Ref, um die Eingabe zu fokussieren, wenn die Komponente montiert wird.

Und voilà! Wir haben erfolgreich einen Ref durch unsere benutzerdefinierte Komponente weitergeleitet.

Warum ist das nützlich?

Du könntest dir fragen: "Warum all diese Mühe?"Nun, stelle dir vor, du baust eine Bibliothek wiederverwendbarer Komponenten. Durch die Verwendung von forwardRef ermöglichst du den Benutzern deiner Komponenten, mit den unterliegenden DOM-Elementen zu interagieren, wenn nötig, ohne die gesamte innere Struktur deiner Komponente preiszugeben.

Es ist, als ob man jemandem eine Fernbedienung für ein Fernsehgerät gibt, die nur die wichtigsten Knöpfe hat, anstatt ihn mit der gesamten internen Verdrahtung zu überfordern.

Eine Tabelle der forwardRef-Methoden

Hier ist eine praktische Tabelle, die die wichtigsten Methoden zusammenfasst, die wir besprochen haben:

Methode Beschreibung Beispiel
React.forwardRef() Erzeugt eine React-Komponente, die den Ref-Attribut an eine Kindkomponente weiterleiten kann const FancyButton = React.forwardRef((props, ref) => ...)
useRef() Erzeugt ein veränderbares Ref-Objekt const ref = useRef(null)
ref-Attribut Hängt den Ref an ein React-Element an <input ref={ref} />

Schlussfolgerung

Und das war's, Leute! Wir haben die Welt des Forwarding von Refs in React durchquert. Denke daran, wie bei jedem mächtigen Werkzeug, verwendeRefs und Ref-Forwarding maßvoll. Sie sind großartig für das Management von Fokus, das Auslösen von Animationen oder die Integration mit Drittanbieter-DOM-Bibliotheken.

Während du deine React-Abenteuer fortsetzt, wirst du weitere Szenarien finden, in denen das Forwarding von Refs äußerst nützlich sein kann. Halte das Üben und Coden aufrecht, und bevor du es weißt, baust du erstaunliche React-Anwendungen!

Happy Coding und möge deine Refs stets wahr sein!

Credits: Image by storyset