Adloun

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

Une alerte réutilisable

Composants · niveau 1 (application)

Énoncé

Écrire un composant AlerteMessage dont la prop type vaut "info" (par défaut) ou "erreur", et dont le message est fourni par un emplacement. Une alerte d'erreur doit être annoncée immédiatement par un lecteur d'écran, une information à la première pause. Que se passe-t-il avec type="succes" ?

Corrigé


const { createApp } = Vue;

const AlerteMessage = {
  template: "#modele-alerte-message",
  props: {
    type: {
      type: String,
      default: "info",
      validator: (t) => ["info", "erreur"].includes(t),
    },
  },
};

createApp({ components: { AlerteMessage } }).mount("#app");

<template id="modele-alerte-message">
  <div :class="['alerte', type]" :role="type === 'erreur' ? 'alert' : 'status'">
    <strong>{{ type === "erreur" ? "Erreur" : "Information" }} :</strong>
    <slot>(message vide)</slot>
  </div>
</template>

Le rôle alert fait annoncer le message immédiatement, le rôle status à la première pause du lecteur d'écran. Avec type="succes", la console affiche


[Vue warn]: Invalid prop: custom validator check failed for prop "type".
  at <AlerteMessage type="succes" >
  at <App>

et l'alerte s'affiche quand même, comme une information : le validateur prévient, il n'empêche rien.

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 →