Adloun

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

Remplacer un tableau

La réactivité · niveau 2

Énoncé

Qu'affichent la console et la page après un clic sur « Retirer Java » ? Expliquer la différence entre les deux lignes.


<div id="app">
  <p>ref : {{ avecRef.join(", ") }}</p>
  <p>reactive : {{ avecReactive.join(", ") }}</p>
  <button type="button" @click="retirerJava">Retirer Java</button>
</div>

const { createApp, ref, reactive } = Vue;

createApp({
  setup() {
    const avecRef = ref(["Java", "Analyse", "Physique"]);
    let avecReactive = reactive(["Java", "Analyse", "Physique"]);

    function retirerJava() {
      avecRef.value = avecRef.value.filter((t) => t !== "Java");
      avecReactive = avecReactive.filter((t) => t !== "Java");
      console.log(avecRef.value.length, avecReactive.length);
    }
    return { avecRef, avecReactive, retirerJava };
  },
}).mount("#app");

Corrigé


2 2
ref : Analyse, Physique
reactive : Java, Analyse, Physique
Retirer Java

Les deux tableaux filtrés ont deux éléments. Mais avecReactive = … réaffecte une variable locale : le gabarit utilise toujours le proxy renvoyé par setup, qui n'a pas changé. Avec une ref, on remplace sa valeur, que le gabarit lit à travers elle. Pour un objet reactive, il faudrait le modifier sur place (splice).

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 →