Vue : construire une application web (école d'ingénieur) · Chapitre 1 · Application directe du cours
Expressions valides ?
Premiers pas avec Vue · niveau 2
Énoncé
Avec setup() { return { prix: 32, quantite: 2 }; }, lesquelles de ces interpolations sont acceptées ? Que se passe-t-il pour les autres ?
<ol id="app">
<li>{{ prix * quantite }}</li>
<li>{{ if (quantite > 0) { "oui" } }}</li>
<li>{{ quantite > 0 ? "oui" : "non" }}</li>
<li>{{ quantite = 5 }}</li>
<li>{{ Math.max(prix, 40) }}</li>
<li>{{ window.innerWidth }}</li>
</ol>Corrigé
La page ne s'affiche pas du tout : la deuxième interpolation contient une instruction if, et c'est la compilation du gabarit entier qui échoue (le HTML produit est vide) :
[Vue warn]: Template compilation error: Error parsing JavaScript expression: avoid using JavaScript keyword as property name: "if"
1 |
2 | <li>{{ prix * quantite }}</li>
3 | <li>{{ if (quantite > 0) { "oui" } }}</li>
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 | <li>{{ quantite > 0 ? "oui" : "non" }}</li>
5 | <li>{{ quantite = 5 }}</li>
at <App>
Uncaught SyntaxError: Unexpected token 'if'
Sans elle (sans-if.html), c'est le rendu qui échoue à son tour, cette fois à cause de window, qui ne fait pas partie des globales visibles dans un gabarit :
[Vue warn]: Property "window" was accessed during render but is not defined on instance.
at <App>
[Vue warn]: Unhandled error during execution of render function
at <App>
Uncaught TypeError: Cannot read properties of undefined (reading 'innerWidth')
Restent quatre expressions acceptées. Le produit et la condition ternaire sont des expressions ordinaires, et Math fait partie des globales autorisées. L'affectation quantite = 5 est elle aussi une expression, donc acceptée : avec seulement elle, le produit et Math.max (affectation.html), la liste affiche
"64"
"5"
"160"
"40"
L'affectation, exécutée pendant le rendu, a changé la valeur lue par la ligne suivante. Un gabarit qui modifie les données qu'il affiche est une erreur de conception : avec une donnée réactive, chaque modification déclencherait un nouveau rendu. Les calculs vont dans setup, le gabarit se contente de lire.
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.