Props ·
Events ·
Slots ·
Composables ·
Dynamic Components ·
Provide / Inject
Diese Cheatsheet vertieft die Komponentenkommunikation und -organisation in Vue.js – von Props und Events über Slots und Composables bis zu fortgeschrittenen Techniken wie Dynamic Components und Provide/Inject.
Props sind Daten, die von einer Elternkomponente an eine Kindkomponente übergeben werden. Mit defineProps können Sie Typen, Standardwerte und Validierungsfunktionen definieren.
| Typ | Beschreibung |
|---|---|
| String | Text |
| Number | Zahl |
| Boolean | Wahrheitswert |
| Array | Liste |
| Object | Objekt |
| Function | Funktion |
| Promise | Promise |
| null | Beliebiger Typ (keine Prüfung) |
defineProps<{ name: string; age?: number }>(). Props sollten nie direkt in der Kindkomponente mutiert werden – verwenden Sie Events für die Kommunikation nach oben.
Events ermöglichen die Kommunikation von der Kindkomponente zur Elternkomponente. defineEmits deklariert die Events. v-model ist eine syntaktische Zucker für die Zwei-Wege-Bindung.
defineModel (ab Vue 3.4) vereinfacht die v-model-Implementierung erheblich. Für ältere Versionen verwenden Sie props und emit('update:modelValue').
Slots ermöglichen es, einer Komponente dynamische Inhalte zu übergeben. Benannte Slots (name) erlauben mehrere Einschubstellen. Scoped Slots geben Daten von der Kindkomponente an den Slot-Inhalt weiter.
v-slot="{ item }") sind ideal für Listen- und Tabellenkomponenten, bei denen die Darstellung der Daten vom Elternteil gesteuert werden soll.
Composables sind Funktionen, die reaktive Logik kapseln und in mehreren Komponenten wiederverwendbar machen – ähnlich wie Hooks in React.
use beginnen (Konvention). Sie können andere Composables aufrufen und so komplexe Logik modular aufbauen. Nutzen Sie sie für API-Aufrufe, Formularvalidierung, Timer, usw.
Dynamische Komponenten erlauben das Austauschen von Komponenten zur Laufzeit – ideal für Tab-Navigation, modale Dialoge oder verschiedene Ansichten.
<keep-alive> bewahrt den Zustand von Komponenten, wenn sie nicht aktiv sind – nützlich für Tabs oder Schritt-für-Schritt-Formulare. Async Components werden erst geladen, wenn sie benötigt werden (Lazy Loading).
Provide / Inject ist eine Alternative zu Props für die Weitergabe von Daten über mehrere Komponentenebenen hinweg – ohne Prop Drilling.
Symbol als Schlüssel für Provide/Inject, um Kollisionen zu vermeiden. Nutzen Sie readonly, um ungewollte Mutationen zu verhindern. Provide/Inject ist ideal für Theme, Sprache, Authentifizierungsstatus oder Datenbankverbindungen.
defineProps
defineEmits
<slot>
useX
<component>
provide
defineProps({ name: String }) ·
$emit('update', value) ·
v-slot="{ item }" ·
provide('key', value)