Vue : construire une application web (école d'ingénieur) · Chapitre 1 · Exercice de TD
Fin des soldes
Premiers pas avec Vue · niveau 2
Énoncé
Afficher « Fin des soldes dans 3 s », décompté chaque seconde avec setInterval, puis « Les soldes sont terminés. ». Pourquoi n'y a-t-il aucune ligne qui modifie la page ?
Corrigé
<div id="app">
<p>{{ reste > 0 ? "Fin des soldes dans " + reste + " s" : "Les soldes sont terminés." }}</p>
</div>
const { createApp, ref } = Vue;
createApp({
setup() {
const reste = ref(3);
const minuteur = setInterval(() => {
reste.value--;
if (reste.value === 0) {
clearInterval(minuteur);
}
}, 1000);
return { reste };
},
}).mount("#app");
Le paragraphe juste après le chargement, une seconde plus tard, puis trois secondes plus tard :
Fin des soldes dans 3 s
Fin des soldes dans 2 s
Les soldes sont terminés.
Le minuteur ne touche qu'à la ref reste ; le gabarit décrit le texte pour toute valeur de reste, et Vue rend la page après chaque modification. On arrête le minuteur avec clearInterval pour ne pas descendre sous zéro. Si l'application pouvait disparaître de la page, il faudrait aussi l'arrêter à ce moment : c'est le rôle du cycle de vie (chapitre 8).
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.