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

js Implementierung des Verifizierungscode-Falls

In diesem Artikelbeispiel wird der spezifische Co...

Eine kurze Einführung in den allgemeinen Prozess der Web-Frontend-Webentwicklung

Ich sehe viele Anfänger in der Front-End-Entwicklu...

Tutorial-Diagramm zur kostenlosen 64-Bit-Installationsversion von MySQL 5.7.31

1. Herunterladen Download-Adresse: https://dev.my...

Auf Wiedersehen Docker: So wechseln Sie in 5 Minuten zu Containerd

Docker ist eine sehr beliebte Containertechnologi...

JavaScript implementiert die Eingabeüberprüfung im Kennwortfeld

Manchmal ist es notwendig, bei Benutzereingaben e...

MySQL-Lernprogramm Clustered Index

Das Clustering ist eigentlich relativ zur InnoDB-...

So richten Sie geplante Sicherungsaufgaben in Linux CentOS ein

Implementierungsvorbereitung # Der Dateipfad muss...

Detaillierte Erläuterung gängiger Methoden von JavaScript String

Inhaltsverzeichnis 1. charAt Grammatik Parameter ...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.22

Installation und Konfiguration von MySQL8.0.22 (s...

Unterschiede zwischen proxy_pass in zwei Modulen in nginx

1. Die proxy_pass -Direktive des Moduls 1.ngx_str...