Zusammenfassung
In dieser Lektion hast du gelernt:
- Eine Komponente hat einen Lebenszyklus: Sie wird erstellt (ihr
<script setup>läuft), eingehängt (ihre Elemente kommen in die Seite), aktualisiert (nach jeder Änderung ihres States) und ausgehängt (aus der Seite entfernt, zum Beispiel durchv-if, und ihr State mit ihr). - Lifecycle-Hooks führen deinen Code zu diesen Zeitpunkten aus:
onMounted(() => { … }),onUpdated()undonUnmounted(), aus"vue"importiert und oben im<script setup>aufgerufen. - Daten aus einer Datei lädst du in
onMounted, mit einerasync-Funktion,fetch()undantwort.json(). Mit einem Ref wielaedtzeigt die Vorlage in der ZwischenzeitWird geladen…. Schreibe nieawaitganz oben ins<script setup>: Die Komponente zeigt dann nichts. antwort.okistfalse, wenn der Server mit einem Fehler geantwortet hat, etwa 404 Not Found bei einem falschen Dateinamen. Prüfe es und zeige eine Fehlermeldung statt der Daten.- Was eine Komponente startet, stoppt sie auch: Ein Intervall, das in
onMountedstartet, wird inonUnmountedmitclearInterval()gestoppt. Sonst läuft es weiter, wenn die Komponente schon weg ist. - Ein Template Ref gibt dir ein Element der Vorlage:
ref="suchfeld"in der Vorlage undconst suchfeld = useTemplateRef("suchfeld");im Skript.suchfeld.valueist das Element, sobald die Komponente eingehängt ist, und davornull. - Was in
localStoragegespeichert ist, liest du, wenn der Ref erstellt wird, weil es sofort antwortet, undwatchspeichert es, wenn es sich ändert.
In der nächsten Lektion, Composables, holst du Code wie das Laden der Speisekarte aus den Komponenten heraus in eigene Funktionen, die jede Komponente benutzen kann.
Aber übe zuerst auf der Bewertungsseite des Cafés: Sie lädt, was die Gäste geschrieben haben, setzt den Cursor in das Feld für deine eigene Bewertung und behält, was du geschrieben hast, auch wenn du die Seite schließt.
So schreibst du es:
Anweisungen
- 1
Lade in
onMounteddie Dateibewertungen.jsoninbewertungen, damit die Liste jede Bewertung zeigt, etwaAnna: Der beste Karottenkuchen der Stadt.Zeige, während die Bewertungen laden,<p>Wird geladen…</p>anstelle der Liste. - 2
Setze beim Öffnen der Seite den Cursor mit einem Template Ref in das Textfeld für deine Bewertung.
- 3
Behalte den Entwurf: Immer wenn sich der Text im Feld ändert, speichere ihn in
localStorageunter dem Schlüsselentwurf, und wenn die App startet, beginneentwurfmit dem Gespeicherten. Es ist schon Text, also braucht es kein JSON. Probiere es aus: Schreibe etwas und klicke auf „Ausführen“.