Lernen Sie, benutzerdefinierte Hooks in React zu erstellen

Lernen Sie, benutzerdefinierte Hooks in React zu erstellen

1. Was sind benutzerdefinierte Hooks

Wiederverwendung der Logik

Einfach ausgedrückt können durch die Verwendung benutzerdefinierter Hooks bestimmte Komponentenlogiken in wiederverwendbare Funktionen extrahiert werden. Ein benutzerdefinierter Hook ist eine Javascript-Funktion, die ab use andere Hooks aufruft.

2. Wenn keine benutzerdefinierten Hooks verwendet werden

Beispiel 1: Wenn unsere gesamte Seite die Koordinaten der Mausbewegung des Benutzers abrufen muss, können wir ohne Verwendung des Hook-Codes schreiben

  const [Position, setzePosition] = useState({
    x: 0,
    j: 0
  })
  useEffect(() => {
    const verschieben = (e) => {
      setzePosition({ x: ex, y: ey })
    }
    document.addEventListener('Mausbewegung', Bewegung)
    zurückgeben () => {
      document.removeEventListener('Mausbewegung', Bewegung)
    }
  }, [])
  zurückkehren (
    <div>
      x:{position.x}
      y:{position.y}
    </div>
  )

Beispiel 2: Wenn wir auf unserer Seite ein Bild haben, das der Maus folgt, können wir es auch so schreiben, ohne den Hook-Code zu verwenden:

const [Position, setzePosition] = useState({
    x: 0,
    j: 0
  })
  useEffect(() => {
    const verschieben = (e) => {
      setzePosition({ x: ex, y: ey })
    }
    document.addEventListener('Mausbewegung', Bewegung)
    zurückgeben () => {
      document.removeEventListener('Mausbewegung', Bewegung)
    }
  }, [])
  zurückkehren (
    <div>
      <Bild
        quelle={img}
        Stil={{
          Position: 'absolut',
          oben: position.y,
          links: position.x,
        }}
        alt=""
      />
    </div>
  )

Offensichtlich haben die beiden obigen Beispiele unterschiedliche Präsentationseffekte, aber die verwendeten Logikcodes sind größtenteils gleich. Wir können Hooks verwenden, um die Logikcodes wiederzuverwenden.

3. Benutzerdefinierten Hook verwenden

Wir extrahieren den wiederverwendbaren Logikcode aus den beiden obigen Beispielen und erstellen eine neue Datei namens useMousePosition

importiere { useState, useEffect } von 'react'
exportiere Standardfunktion useMousePosition() {
  const [Position, setzePosition] = useState({
    x: 0,
    j: 0
  })
  useEffect(() => {
    const verschieben = (e) => {
      setzePosition({ x: ex, y: ey })
    }
    document.addEventListener('Mausbewegung', Bewegung)
    zurückgeben () => {
      document.removeEventListener('Mausbewegung', Bewegung)
    }
  }, [])
  Rücklaufposition
}

Wir haben diese Funktionalität in der Funktion useMousePosition extrahiert. Jetzt können wir es importieren, wo immer wir es verwenden möchten!

Verwenden Sie es schließlich wie eine normale Funktion

  const position = useMousePosition()
  zurückkehren (
    <div>
      x:{position.x}
      y:{position.y}
    </div>
  )

Offensichtlich wird die Codemenge reduziert

Dies ist das Ende dieses Artikels zum Erstellen von benutzerdefinierten Hooks in React. Weitere relevante Inhalte zu benutzerdefinierten Hooks in React finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • ReactHooks Batch-Update-Status und Abrufen von Routenparametern Beispielanalyse
  • React Hook: So verwenden Sie Effect Hook
  • Verstehen Sie React-Hooks und Beispielcode in drei Minuten
  • Einführung in 10 Hooks in React
  • Detaillierte Erklärung zu React Hooks
  • React Hook: So verwenden Sie State Hook

<<:  Beispiel für die Verwendung von Docker Compose zum Erstellen einer Consul-Clusterumgebung

>>:  Die Verwendung von Textbereichen in HTML und häufige Probleme und Fallanalyse

Artikel empfehlen

Vue realisiert den Card-Flip-Effekt

In diesem Artikelbeispiel wird der spezifische Co...

Der Unterschied und die Verwendung von distinct und row_number() over() in SQL

1 Einleitung Wenn wir SQL-Anweisungen schreiben, ...

Detaillierte Erläuterung des Prozesses der Zabbix-Überwachung von SQLServer

Werfen wir einen Blick auf die Zabbix-Überwachung...

MySql-Import - CSV-Datei oder tabulatorgetrennte Datei

Manchmal müssen wir Daten aus einer anderen Bibli...

Zusammenfassung zum Erstellen und Verwenden von Array-Methoden in Bash-Skripten

Definieren eines Arrays in Bash Es gibt zwei Mögl...

So erstellen Sie einen K8S-Cluster und installieren Docker unter Hyper-V

Wenn Sie das Win10-System installiert haben und e...

Grafisches Tutorial zur Installation von CentOS 7.3 auf VMWare

Die Installationsschritte für CentOS 7.3 werden a...

MYSQL Performance Analyzer EXPLAIN Anwendungsbeispielanalyse

Dieser Artikel veranschaulicht anhand eines Beisp...

Zusammenfassung der Grundkenntnisse und Vorgänge der MySQL-Datenbank

Dieser Artikel erläutert anhand von Beispielen di...

Führen Sie die Schritte zum Einrichten automatischer Updates in CentOS 8 aus

Das Beste, was Sie für Ihre Daten und Computer tu...

Docker implementiert Container-Portbindung am lokalen Port

Heute bin ich auf ein kleines Problem gestoßen: N...

Implementieren einer verteilten Sperre mit MySQL

einführen In einem verteilten System ist die vert...

Absatzlayout und Zeilenumbrüche in HTML-Webseiten

Das Erscheinungsbild einer Webseite hängt maßgebl...