Astro für Anfänger · Teil 16TutorialEinsteiger

Astro

Astro-Kurs 16: Listen und Bedingungen

Du erzeugst wiederholte HTML-Elemente aus Daten und blendest Inhalte bedingt ein.

Veröffentlicht am

Etappe 2 – Lektion 16 von 22 · Modellbau-Werkstatt
Voraussetzungen: Etappe 1 (Teile 1–11); ab Teil 13 auch die jeweils vorherige Lektion.

Lernziel: Du erzeugst wiederholte HTML-Elemente aus Daten und blendest Inhalte bedingt ein.

1. Projekte als Daten speichern

Bisher haben wir Projektkarten einzeln geschrieben. Bei zehn Projekten ist das mühsam. Ein Array speichert mehrere Datensätze:

Lege src/pages/projektliste.astro an:

---
import BasisLayout from '../layouts/BasisLayout.astro';
import ProjektKarte from '../components/ProjektKarte.astro';

const projekte = [
  { titel: '3D-Druck', beschreibung: 'Funktionale Teile drucken.', fertig: true },
  { titel: 'Modellflug', beschreibung: 'Ein neues Flugzeug bauen.', fertig: false },
  { titel: 'Elektronik', beschreibung: 'Sensoren testen.', fertig: true },
];
const nurFertige = false;
const sichtbareProjekte = nurFertige ? projekte.filter(p => p.fertig) : projekte;
---
<BasisLayout title="Projektliste">
  <h1>Projekte</h1>
  <p>Es gibt {sichtbareProjekte.length} sichtbare Projekte.</p>
  <div class="raster">
    {sichtbareProjekte.map(projekt => (
      <ProjektKarte titel={projekt.titel} beschreibung={projekt.beschreibung} />
    ))}
  </div>
  {sichtbareProjekte.length === 0 && <p>Keine Projekte gefunden.</p>}
</BasisLayout>
<style>
  .raster { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 1rem; }
</style>

map() erzeugt für jeden Eintrag eine Karte. filter() wählt Einträge aus. ? : ist eine kurze Wenn-Dann-Sonst-Bedingung. Das sind JavaScript-Ausdrücke und kein spezieller Astro-Befehl.

2. Build-Zeit und Interaktivität

nurFertige ist hier eine feste Variable, die beim Seitenaufbau ausgewertet wird. Eine Schaltfläche im Browser, die Projekte live filtert, benötigt JavaScript im Browser; das kommt später im Kurs.

Übung

Setze nurFertige auf true. Ergänze ein viertes unfertiges Projekt. Wie viele Karten erscheinen?

Lösungshinweis

Die beiden fertig: true-Einträge bleiben sichtbar. Das vierte unfertige Projekt wird ausgefiltert.


Alle Beispiele beziehen sich auf ein eigenes Astro-Übungsprojekt. Die Dateipfade sind relativ zum Projekt-Hauptordner angegeben. Die Kursdateien selbst gehören in das Content-Verzeichnis der Know-How-Schmiede, nicht in das Übungsprojekt.