Adloun

Vue : construire une application web (école d'ingénieur) · Chapitre 7 · Exercice de TD

Lecture seule

Communication entre composants · niveau 2

Énoncé

Un panier fournit readonly(lignes) et une fonction ajouter. Que se passe-t-il quand un composant exécute chacune des deux lignes suivantes ?


panier.lignes.value.push("Livre ajouté sans passer par ajouter()");
panier.ajouter("Le Petit Prince");

Corrigé


<script setup>
import { creerPanier } from "./panier.js";

const panier = creerPanier();

function tricher() {
  panier.lignes.value.push("Livre ajouté sans passer par ajouter()");
  console.log("lignes :", JSON.stringify(panier.lignes.value));
}
function ajouterProprement() {
  panier.ajouter("Le Petit Prince");
  console.log("lignes :", JSON.stringify(panier.lignes.value));
}
</script>

Après un clic sur chaque bouton :


[Vue warn] Set operation on key "0" failed: target is readonly. Proxy(Array)
[Vue warn] Set operation on key "length" failed: target is readonly. Proxy(Array)
lignes : []
lignes : ["Le Petit Prince"]

Le push échoue (Vue refuse d'écrire l'élément 0 et la longueur), avec deux avertissements, et le panier reste vide. L'appel de ajouter réussit : la fonction a été créée avec la ref d'origine, modifiable. Le fournisseur garde ainsi le contrôle de toutes les modifications.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →