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
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.