Slots

In dieser Aufgabe wendest du `Slots` und dynamische Komponenten an.

Erstelle eine Galerie-Komponente, die Bilder und Videos anzeigen kann.

Lösungsschritte

Lade folgendes Vue Projekt herunter und richte es lokal ein. Öffne es anschliessend in VS Code.

Projektcode herunterladen

Überblick verschaffen

Du sollst eine Komponente erstellen, die alle Daten aus der galleries Variable anzeigen kann.

Die Galerien sollen als Liste ausgegeben werden. Dazu kannst du eine <Gallery> Komponente erstellen.

Galerien auflisten

Properties ergänzen

Slot definieren

Die Gallery Komponente zeigt momentan ein Beispiel-Bild und ein Beispiel-Video an. Diese Daten sollen dynamisch gerendert werden.

Als ersten Schritt kannst du einen <slot> definieren. Diese spezielle Vue-Komponente erlaubt es dir, den Inhalt einer Komponente von der Elternkomponente aus zu verändern.

Die Darstellung der Galerie im Browser sollte unverändert sein.

<GalleryImage> und <GalleryVideo> Komponenten erstellen

Dank des <slot> ist die <Gallery> Komponente jetzt nur noch für die Anzeige des Titles, der Beschreibung und des Grids zuständig. Was genau im Grid platziert wird, kann die Elternkomponente neu frei entscheiden.

Dynamische Komponente rendern

Wir möchten nun über alle items einer Galerie iterieren und abhängig vom type entweder die GalleryVideo oder die GalleryImage Komponente einbinden.

Vue bietet dir für diesen Anwendungsfall eine generische <component> Komponente an. Über die is Property lässt sich dynamisch bestimmen, welche Komponente gerendert werden soll.

Um zu definieren, welche Komponente zu welchem type gehört, können wir folgendes Objekt im <script> Bereich ergänzen:

Danach kann innerhalb der <Gallery> Komponente mit Hilfe der <component> Komponente und dem components Objekt ein v-for erstellt werden:

Zusatzaufgabe: Weitere Medien-Typen ergänzen