Spezifische Verwendung von useRef in React

Spezifische Verwendung von useRef in React

Ich glaube, dass Leute, die Erfahrung mit React haben, mit ref vertraut sind, das verwendet werden kann, um Komponenteninstanzobjekte oder DOM-Objekte abzurufen.

Neben der herkömmlichen Verwendung kann die useRef-Hook-Funktion Daten auch „über Rendering-Zyklen hinweg“ speichern.

Schauen wir uns zunächst die traditionelle Verwendung an:

importiere React, { useState, useEffect, useMemo, useRef } von „react“;

exportiere Standardfunktion App(props){
  const [Anzahl, Anzahl festlegen] = useState(0);

  const doubleCount = useMemo(() => {
    gibt 2 * Anzahl zurück;
  }, [zählen]);

  const counterRef = useRef();

  useEffect(() => {
    document.title = `Der Wert ist ${count}`;
    Konsole.log(counterRef.current);
  }, [zählen]);
  
  zurückkehren (
    <>
      <button ref={couterRef} onClick={() => {setCount(count + 1)}}>Anzahl: {count}, double: {doubleCount}</button>
    </>
  );
}

Der Code verwendet useRef, um ein counterRef-Objekt zu erstellen und weist es dem ref-Attribut der Schaltfläche zu. Auf diese Weise können Sie durch Zugriff auf couterRef.current auf das der Schaltfläche entsprechende DOM-Objekt zugreifen.

Dann schauen wir uns an, wie man Daten speichert.

Gibt es in einer Komponente etwas, das Renderzyklen überdauern kann, d. h. Eigenschaften, die unverändert bleiben, nachdem die Komponente mehrmalig gerendert wurde? Das erste, was einem in den Sinn kommt, sollte der Staat sein. Das stimmt, der Zustand einer Komponente kann nach mehreren Renderings unverändert bleiben. Das Problem mit dem Status besteht jedoch darin, dass nach seiner Änderung eine erneute Darstellung der Komponente erfolgt.

Derzeit kann useRef zum Speichern von Daten über Rendering-Zyklen hinweg verwendet werden, und eine Änderung führt nicht zum Rendern der Komponente.

importiere React, { useState, useEffect, useMemo, useRef } von „react“;

exportiere Standardfunktion App(props){
  const [Anzahl, Anzahl festlegen] = useState(0);

  const doubleCount = useMemo(() => {
    gibt 2 * Anzahl zurück;
  }, [zählen]);

  const timerID = useRef();
  
  useEffect(() => {
    timerID.current = setzeIntervall(()=>{
        setCount(Anzahl => Anzahl + 1);
    }, 1000); 
  }, []);
  
  Effekt verwenden(()=>{
      wenn(Anzahl > 10){
          LöschenInterval(TimerID.aktuell);
      }
  });
  
  zurückkehren (
    <>
      <button ref={couterRef} onClick={() => {setCount(count + 1)}}>Anzahl: {count}, double: {doubleCount}</button>
    </>
  );
}

Im obigen Beispiel verwende ich die aktuelle Eigenschaft des Ref-Objekts, um die Timer-ID zu speichern, sodass die Timer-ID nach mehreren Renderings gespeichert werden kann, sodass der Timer normal gelöscht werden kann.

Dies ist das Ende dieses Artikels über die spezifische Verwendung von useRef in React. Weitere relevante React useRef-Inhalte finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detailliertes Beispiel für die Verwendung von useState in React
  • Einführung in useRef und useState in JavaScript

<<:  Detaillierte Erläuterung der Nginx-Installation, SSL-Konfiguration und allgemeinen Befehle unter Centos7.x

>>:  Detaillierte Erläuterung der MySQL-Transaktionsverarbeitung

Artikel empfehlen

Detaillierte Erläuterung der Verarbeitung der drei Docker Nginx-Protokolle

Da die Kollegen im Unternehmen die Standardausgab...

Lösung für die Lücke zwischen Divs

Wenn Sie HTML-Div-Blöcke verwenden und die Mitte ...

Java importiert Daten aus Excel in MySQL

Manchmal müssen wir bei unserer tatsächlichen Arb...

So stellen Sie per SSH eine Verbindung zum Docker-Server her

Als ich zum ersten Mal mit Docker in Berührung ka...

Anfänger lernen einige HTML-Tags (1)

Anfänger können HTML lernen, indem sie einige HTM...

Automatisches Laden des Kernelmodul-Overlayfs-Vorgangs beim CentOS-Start

Um Kernelmodule in CentOS automatisch zu laden, k...

Implementierungscode der CSS-Formularvalidierungsfunktion

Rendern Prinzip Im Formularelement gibt es ein Mu...

So zeigen Sie den Nginx-Konfigurationsdateipfad und den Ressourcendateipfad an

Zeigen Sie den Pfad der Nginx-Konfigurationsdatei...

CSS-Schreibstandards und -Reihenfolge teilen [für alle empfohlen]

CSS-Schreibreihenfolge 1. Positionsattribute (Pos...

Detaillierte Erklärung der MySQL Truncate-Verwendung

Inhaltsverzeichnis MySQL Truncate-Verwendung 1. T...

React-Beispiel, das den Fortschritt des Datei-Uploads zeigt

Inhaltsverzeichnis React-Demo zur Anzeige des Dat...