So implementieren Sie die Wiederverwendung von Logik mit der Vue3-Kompositions-API

So implementieren Sie die Wiederverwendung von Logik mit der Vue3-Kompositions-API

Die Composition API implementiert Schritte zur Wiederverwendung logischer Elemente:

  1. Extrahieren Sie den Logikcode in eine Funktion. Die Funktionsbefehlskonvention ist das useXXX-Format (das ist dasselbe wie bei React Hooks).
  2. Referenzfunktion useXXX im Setup

Definieren Sie beispielsweise eine Methode zum Abrufen der aktuellen Mausposition

Die erste Möglichkeit besteht darin, die durch ref definierte useMousePosition direkt zu verwenden:

Auf diese Weise können sowohl Exporte als auch Importe nach Belieben destrukturiert werden

// useMousePosition.js
importiere { ref, onMounted, onUnmounted } von 'vue'

// 1. Definieren Sie eine Funktion, extrahieren Sie die Logik und nennen Sie sie useXXX
Funktion useMousePosition() {
  //Verwende ref um const x = ref(0) zu definieren
  konstant y = ref(0)

  Funktion update(e) {
    Konsole.log(x.Wert, y.Wert);

    x.Wert = e.SeiteX
    y.Wert = e.SeiteY
  }

  beimMounted(() => {
    console.log('Beginnen Sie mit der Überwachung von Mausbewegungsereignissen');
    window.addEventListener('Mausbewegung', aktualisieren)
  })

  beiUnmountet(() => {
    console.log('Überwachung von Maus-Scroll-Ereignissen entfernen');
    window.removeEventListener('Mausbewegung', aktualisieren)
  })
  zurückkehren {
    X, 
    j
  }
}

 
// Diese Funktion exportieren export default useMousePosition
<!-- Diese Methode kann in jeder Komponente aufgerufen werden-->

<Vorlage>
  <p>Mausposition: {{x}}, {{y}}</p>
</Vorlage>

<Skript>
importiere useMousePosition aus './useMousePosition'
Standard exportieren {
  Name: 'Mausposition', 
  aufstellen() {
    // useMousePosition verwendet ref um Variablen zu definieren, die dekonstruiert werden können const { x, y } = useMousePosition()
    konsole.log(x, y)
    zurückkehren {
      x, y
    }
  }
}
</Skript>

Die zweite Methode besteht darin, reaktiv zu verwenden, um das Mauskoordinatenobjekt zu definieren.

Diese Exportmethode kann beim Importieren in eine Komponente nicht destrukturiert werden.

importiere { onMounted, onUnmounted, reaktiv } von 'vue'

Exportfunktion useMousePosition2() {
  // Verwenden Sie reactive, um const mouse = reactive({ zu definieren.
    x: 0, 
    j: 0
  })

  Funktion update(e) {
    Maus.x = e.SeiteX
    Maus.y = e.SeiteY
  }

  beimMounted(() => {
    console.log('Beginnen Sie mit der Überwachung von Mausbewegungsereignissen');
    window.addEventListener('Mausbewegung', aktualisieren)
  })

  beiUnmountet(() => {
    console.log('Überwachung von Maus-Scroll-Ereignissen entfernen');
    window.removeEventListener('Mausbewegung', aktualisieren)
  })

  zurückkehren {
    Maus
  }
}
<Vorlage>
  <!-- Objektmethode zum Anzeigen von Informationen verwenden -->
  <p>Mausposition2: {{mouse.x}}, {{mouse.y}}</p>
</Vorlage>
<Skript>
importiere { useMousePosition2 } von './useMousePosition'
Standard exportieren {
  Name: 'Mausposition', 
  aufstellen() {
    // useMousePosition2 ist mit reactive definiert, daher ist eine Dekonstruktion nicht möglich const { mouse } = useMousePosition2()
    zurückkehren {
      Maus
    }
  }
}
</Skript>

Die dritte Methode ist die Verwendung von toRefs

Mit dieser Methode können Sie reaktive Objekte in Ref-Objekte zerlegen.

Exportfunktion useMousePosition3() {
  // Verwenden Sie reactive, um const mouse = reactive({ zu definieren.
    x: 0, 
    j: 0
  })

  Funktion update(e) {
    Maus.x = e.SeiteX
    Maus.y = e.SeiteY
  }

  beimMounted(() => {
    console.log('Beginnen Sie mit der Überwachung von Mausbewegungsereignissen');
    window.addEventListener('Mausbewegung', aktualisieren)
  })

  beiUnmountet(() => {
    console.log('Überwachung von Maus-Scroll-Ereignissen entfernen');
    window.removeEventListener('Mausbewegung', aktualisieren)
  })
  
  //Verwende hier toRefs zum Dekonstruieren in ein Ref-Objekt return toRefs(mouse)
}
<Vorlage>
  <p>Mausposition: {{x}}, {{y}}</p>
</Vorlage>

<Skript>
importiere { useMousePosition3 } von './useMousePosition'
Standard exportieren {
  Name: 'Mausposition', 
  aufstellen() {
    // Benutze reactive, um das Mauskoordinatenobjekt zu definieren, und dekonstruiere es dann über toRefs const { x, y } = useMousePosition() in ein Ref-Objekt.
    konsole.log(x, y)
    zurückkehren {
      x, y
    }
  }
}
</Skript>

Alle drei Methoden können implementiert werden, aber wenn wir sie im Allgemeinen verwenden, geben wir das Ref-Objekt zurück. Daher wird empfohlen, die erste und dritte Methode zu verwenden und zu versuchen, die zweite Methode nicht zu verwenden.

Dies ist das Ende dieses Artikels über die Implementierung der Logikwiederverwendung mit der Vue3-Kompositions-API. Weitere Informationen zur Logikwiederverwendung der Vue3-Kompositions-API 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:
  • Praxis der Verwendung von Vite2+Vue3 zum Rendern von Markdown-Dokumenten
  • Implementierungsmethode für die Kapselung von Vue3-Navigationsleistenkomponenten
  • Vue3 Vue-Ereignisbehandlungshandbuch
  • Ausführliche Erläuterung der Stilfunktion in Vue3-Einzeldateikomponenten
  • vue3.0 + echarts realisiert dreidimensionales Säulendiagramm
  • Dieser Artikel zeigt Ihnen, wie Sie Vue 3.0 responsive verwenden
  • Detaillierte Erläuterung des zugrunde liegenden Prinzips von defineCustomElement, hinzugefügt in vue3.2
  • Vue3 + TypeScript-Entwicklungszusammenfassung
  • Vue3+TypeScript implementiert ein vollständiges Beispiel einer rekursiven Menükomponente
  • Vue3 implementiert eine ToDo-Liste
  • Vue3+Skript-Setup+ts+Vite+Volar-Projekt
  • Vue3 realisiert den Bildlupeneffekt
  • Implementierung der schnellen Projektkonstruktion von vue3.0+vant3.0
  • Schnellstart der Vue3-Dokumentation

<<:  Bei der Installation von mysql8.0.15 winx64 unter Win10 und der Verbindung zum Server sind Probleme aufgetreten

>>:  Tutorial-Analyse der Schnellinstallation von mysql5.7 basierend auf centos7

Artikel empfehlen

Detaillierte Erklärung zur SQL-Injection - Sicherheit (Teil 2)

Sollte dieser Artikel Fehler enthalten oder du An...

MySQL InnoDB-Überwachung (Systemebene, Datenbankebene)

MySQL InnoDB-Überwachung (Systemebene, Datenbanke...

Details zur Verwendung von „order by“ in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...

Beispiele für die korrekte Verwendung von Karten in WeChat-Miniprogrammen

Inhaltsverzeichnis Vorwort 1. Vorbereitung 2. Tat...

Ausführliches Tutorial zur Installation von MySQL 8.0.19 (Windows 64 Bit)

Inhaltsverzeichnis MySQL initialisieren MySQL-Die...

Horizontales Header-Menü mit CSS3 implementiert

Ergebnis:Implementierungscode html <nav class=...

JavaScript, um einen Lotterieeffekt zu erzielen

In diesem Artikel wird der spezifische JavaScript...

Chinesische Parameterbeschreibung und Verwendungsbeispiele für ffmpeg

1. Wenn ffmpeg Videodateien überträgt, können die...

Implementierung der MySQL GRANT-Benutzerautorisierung

Bei der Autorisierung geht es darum, einem Benutz...

Implementierungscode für die Dateimontage von DockerToolBox

Wenn Sie Docker verwenden, stellen Sie möglicherw...

React-Prinzipien erklärt

Inhaltsverzeichnis 1. setState() Beschreibung 1.1...

Docker richtet Port-Mapping ein, kann aber nicht auf die Lösung zugreifen

#docker ps-Check, alle Ports sind zugeordnet CONT...