Adloun

Vue : construire une application web (école d'ingénieur) · Chapitre 9 · Application directe du cours

Le compte client et ses onglets

Le routeur : plusieurs écrans, une seule page · niveau 3 (difficile)

Énoncé

Construire une page /compte avec deux sous-pages, /compte/commandes et /compte/adresse, présentées comme des onglets : le titre « Mon compte » et le menu des deux sous-pages restent affichés, seul le contenu change. L'adresse /compte seule doit montrer les commandes. Vérifier quel lien du menu porte aria-current="page".

Corrigé

La page parente contient le titre, le menu et sa propre vue du routeur :


<script setup>
import { RouterLink, RouterView } from "vue-router";
</script>

<template>
  <h1>Mon compte</h1>
  <nav aria-label="Mon compte">
    <RouterLink :to="{ name: 'compte-commandes' }">
      Mes commandes
    </RouterLink>
    <RouterLink :to="{ name: 'compte-adresse' }">
      Mon adresse
    </RouterLink>
  </nav>
  <RouterView />
</template>

Les sous-pages sont des routes enfants, aux chemins relatifs ; la route enfant de chemin vide redirige vers les commandes :


import { h } from "vue";
import PageCompte from "./PageCompte.vue";

const bloc = (texte) => ({ render: () => h("p", texte) });

export const routeCompte = {
  path: "/compte",
  component: PageCompte,
  children: [
    // /compte seul : on montre les commandes
    { path: "", redirect: { name: "compte-commandes" } },
    { path: "commandes", name: "compte-commandes", component: bloc("Vos 2 commandes…") },
    { path: "adresse", name: "compte-adresse", component: bloc("12, rue des Écoles…") },
  ],
};

Le test ouvre /compte, puis clique sur « Mon adresse », et relève le menu :


/compte/commandes → Mon compte + Vos 2 commandes…
/compte/adresse → Mon compte + 12, rue des Écoles…
<nav aria-label="Mon compte"><a href="/compte/commandes" class=""> Mes commandes </a><a href="/compte/adresse" class="router-link-active router-link-exact-active" aria-current="page"> Mon adresse </a></nav>

/compte a été redirigée vers /compte/commandes. Le titre reste affiché, seul le contenu de la vue imbriquée change, et le lien de la sous-page courante porte aria-current="page". Un lien vers /compte dans le menu principal serait, lui, marqué router-link-active sur les deux sous-pages.

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 →