Detaillierte Erklärung der wechselseitigen Verwendung von Ref in React

Detaillierte Erklärung der wechselseitigen Verwendung von Ref in React

1. Lassen Sie uns zunächst erklären, was Ref ist

Ref-Weiterleitung ist eine Technik, bei der ein Ref automatisch durch eine Komponente an eines ihrer untergeordneten Elemente weitergegeben wird. Dies ist für Bauteile in den meisten Anwendungsfällen jedoch nicht notwendig. Für einige Komponenten ist es jedoch nützlich, insbesondere für wiederverwendbare Komponentenbibliotheken.

Siehe Beschreibung auf der offiziellen Website: hier klicken.

2. Verwendung von ref in Hooks

1. Verwendung von ref in HTMLDom-Hooks

Verwenden Sie es einfach wie gewohnt auf der offiziellen Website. Hier ist ein Beispiel:

const Fn = ()=>{
    const testRef = useRef(null);
    console.log('testRef',testRef.current); // Wird zweimal gerendert, das erste Mal wird null ausgegeben, das zweite Mal <div>test</div>
    zurückkehren (
        <div ref={testRef}>Test</div>
    )
}

2. Verwendung von Ref in Hooks und Funktionskomponenten

Hier müssen Sie nur das ref-Attribut an die Funktionskomponente übergeben

const Fn = ()=>{
    const testRef = useRef(null);
    // Testfunktionskomponente definieren const Test = ({ refs }) => <div ref={refs}>Ich bin ein ReactDOM-Test</div>;
    console.log('testRef',testRef.current); // Wird zweimal gerendert, das erste Mal wird null ausgegeben, das zweite Mal <div>Ich bin ein ReactDOM-Test</div>
    zurückkehren (
        {/* Der Grund, warum hier „refs“ statt „ref as prop“ verwendet wird, liegt darin, dass „ref“ von React speziell verarbeitet wird und nicht als „props“ an React-Komponenten weitergegeben wird, ähnlich wie „key“ */}
         <Testreferenzen={testRef} /> 
    )
}

3. Verwenden von ref mit Klassenkomponenten in Hooks

Hier muss nur noch der Wert manuell dem useRef-Objekt im Callback-Ref der Klassenkomponente zugewiesen werden. Weitere Callback-Refs: hier

importiere ReactDom von „react-dom“;

const Fn = ()=>{
    const testClassRef = useRef(null);
    //Definiere die TestClass-Klassenkomponentenklasse TestClass extends React.Component {
        rendern() {
          zurückkehren (
            <div >
                Ich bin der TestClass-Komponententest</div>
          )
        }
    }
    console.log('testClassRef',testClassRef.current); // Wird zweimal gerendert, das erste Mal wird null ausgegeben, das zweite Mal <div>Ich bin ein TestClass-Komponententest</div>
    zurückkehren (
        {/* Der Grund, warum hier „refs“ statt „ref as prop“ verwendet wird, liegt darin, dass „ref“ von React speziell verarbeitet wird und nicht als „props“ an React-Komponenten weitergegeben wird, ähnlich wie „key“ */}
         <TestKlasse 
             ref={el => {
                console.log('neue Render-Referenzen')
                testClassRef.current = ReactDom.findDOMNode(el);
             }} 
         /> 
    )
}

4. Verwenden von ref mit Klasse und react-redux in Hooks

Wenn Sie auf eine von Connect umschlossene Klassenkomponente stoßen, müssen Sie das Ref-Attribut an die echte React-Komponente weitergeben, da die äußerste Schicht in einen React-Redux-Provider umschlossen wurde. Zu diesem Zeitpunkt müssen Sie auf das ForwardRef-Attribut von Connect achten.

importiere ReactDom von „react-dom“;
importiere { connect } von „react-redux“;

const Fn = ()=>{
    const testClassRef = useRef(null);
    //Definiere die TestClass-Klassenkomponentenklasse TestClass extends React.Component {
        rendern() {
          zurückkehren (
            <div >
                Ich bin der TestClass-Komponententest</div>
          )
        }
    }
    //Definieren Sie die von Connect von TestClass umschlossene Komponente //forwardRef:true. Stellen Sie Redux so ein, dass Ref als Props an die von Connect umschlossene Komponente übergeben werden kann. const TestClassConnect = connect(null, null, null, { forwardRef: true })(TestClass);
    
    console.log('testClassRef',testClassRef.current); // Wird zweimal gerendert, das erste Mal wird null ausgegeben, das zweite Mal <div>Ich bin ein TestClass-Komponententest</div>
    zurückkehren (
        {/* Der Grund, warum hier „refs“ statt „ref as prop“ verwendet wird, liegt darin, dass „ref“ von React speziell verarbeitet wird und nicht als „props“ an React-Komponenten weitergegeben wird, ähnlich wie „key“ */}
         <TestClassConnect
            ref={el => {
              console.log('neue Render-Referenzen')
              testClassRef.current = ReactDom.findDOMNode(el);
            }}
          />
    )
}

Oben finden Sie eine ausführliche Erläuterung der wechselseitigen Verwendung von Ref in React. Weitere Informationen zur wechselseitigen Verwendung von Ref in React finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Wie Sie React forwardRef verwenden und was Sie beachten müssen
  • Die vollständige Verwendung von Setup, Ref und Reactive in der Vue3-Kombinations-API
  • So verstehen Sie das Ref-Attribut von React genau
  • Detaillierte Erklärung der Verwendung von Refs in den drei Hauptattributen von React
  • Spezifische Verwendung von useRef in React
  • Beispiele für die Verwendung von React Ref
  • Detaillierte Erklärung zur Verwendung von Ref in React
  • Detaillierte Erklärung zur Verwendung von react-refetch
  • Lernen Sie zwei Demobeispiele von ref in React
  • Tutorial zur Verwendung von Refs in React
  • Detaillierte Erklärung zur Verwendung von React-Komponentenreferenzen
  • Verwendung der Pulldown-Aktualisierung von RefreshControll in React Native

<<:  So installieren und konfigurieren Sie einen FTP-Server in CentOS8.0

>>:  Holen Sie sich die IP und den Hostnamen aller Hosts auf Zabbix

Artikel empfehlen

Zen-Codierung für Editplus – Beispielcodebeschreibung

Er gibt beispielsweise ein: XML/HTML Code div#Seit...

Zusammenfassung gängiger Befehle zur Linux-Benutzer- und Gruppenverwaltung

Dieser Artikel fasst die allgemeinen Befehle zur ...

Detaillierte Analyse des Blockierungsproblems von js und css

Inhaltsverzeichnis DOMContentLoaded und laden Was...

Beispiel einer Autorisierungsüberprüfungsmethode von Nest.js

Inhaltsverzeichnis 0x0 Einführung 0x1 RBAC-Implem...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.17

Der Blogger sagte : Ich habe eine Reihe von Blogb...

Flex-Layout ermöglicht adaptive Seiten (Syntax und Beispiele)

Einführung in Flex Layout Flex bedeutet auf Engli...

So erzielen Sie mit Vue3 beispielsweise einen Lupeneffekt

Inhaltsverzeichnis Vorwort 1. Die Bedeutung der K...

Details zur Verwendung von „order by“ in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...

Durchführung der lokalen Migration von Docker-Images

Ich habe vor Kurzem Docker gelernt und stoße dabe...