Adloun

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

Remise de rentrée

La réactivité · niveau 2

Énoncé

Un panier de lignes { titre, prix, quantite } affiche le sous-total, une remise de 10 % dès 50 € d'achats (ligne affichée seulement s'il y a une remise) et le total. Écrire trois propriétés calculées, dont deux qui s'appuient sur les autres. Avec un « Petit Prince » à 8,50 € et un « Java » à 32 €, combien de « Petit Prince » faut-il ajouter pour obtenir la remise, et quel est alors le total ?

Corrigé


const { createApp, ref, computed } = Vue;

function euros(montant) {
  return montant.toLocaleString("fr-FR", { style: "currency", currency: "EUR" });
}

createApp({
  setup() {
    const lignes = ref([
      { titre: "Petit Prince", prix: 8.5, quantite: 1 },
      { titre: "Java", prix: 32, quantite: 1 },
    ]);
    const sousTotal = computed(() => lignes.value.reduce((s, l) => s + l.prix * l.quantite, 0));
    const remise = computed(() => (sousTotal.value >= 50 ? sousTotal.value * 0.1 : 0));
    const total = computed(() => sousTotal.value - remise.value);
    return { lignes, sousTotal, remise, total, euros };
  },
}).mount("#app");

<div id="app">
  <p v-for="l in lignes" :key="l.titre">{{ l.titre }} × {{ l.quantite }}
    <button type="button" @click="l.quantite++">+1</button></p>
  <p>Sous-total : {{ euros(sousTotal) }}</p>
  <p v-if="remise > 0">Remise (10 % dès 50 €) : −{{ euros(remise) }}</p>
  <p><strong>Total : {{ euros(total) }}</strong></p>
</div>

Au départ, puis après deux clics sur « +1 » du « Petit Prince » :


Petit Prince × 1 +1
Java × 1 +1
Sous-total : 40,50 €
Total : 40,50 €
--- après « +1 » sur Petit Prince, deux fois
Petit Prince × 3 +1
Java × 1 +1
Sous-total : 57,50 €
Remise (10 % dès 50 €) : −5,75 €
Total : 51,75 €

Illustration

Il faut deux « Petit Prince » de plus : , alors qu'avec un seul de plus, . La remise vaut 5,75 € et le total 51,75 €. total s'appuie sur sousTotal et remise : les propriétés calculées se composent, et chacune n'est recalculée que si une de ses sources change.

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 →