From 532d47cd580ff53211a9b928e6f5f723b77fef04 Mon Sep 17 00:00:00 2001 From: Thomas Fritsch <thomas@uidlt.fr> Date: Tue, 2 Feb 2021 09:21:35 +0100 Subject: [PATCH] simplification exercice D.1.3 --- D-poo-avancee.md | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/D-poo-avancee.md b/D-poo-avancee.md index c911b11..95b0684 100644 --- a/D-poo-avancee.md +++ b/D-poo-avancee.md @@ -53,14 +53,41 @@ _**L'objectif de cet exercice est d'utiliser une classe à l'intérieur d'une au <img src="images/readme/pizzaland-03.png" > -3. **Créez une classe `PizzaThumbnail`** (dans `src/components/PizzaThumbnail.js`) qui hérite de la classe `Component` et qui utilise **obligatoirement** la classe **`Img`** pour rendre son code HTML. +3. **Créez une classe `PizzaThumbnail`** (dans `src/components/PizzaThumbnail.js`) avec le code suivant : - Avec le code JS suivant : + ```js + export default class PizzaThumbnail extends Component { + constructor({ name, image, price_small, price_large }) { + super('article', { name: 'class', value: 'pizzaThumbnail' }, [ + new Component('a', { name: 'href', value: image }, [ + new Img(image), + new Component('section', null, [ + new Component('h4', null, name), + new Component('ul', null, [ + new Component('li', null, `Prix petit format : ${price_small.toFixed(2)} €`), + new Component('li', null, `Prix grand format : ${price_large.toFixed(2)} €` ), + ]), + ]), + ]), + ]); + } + } + ``` + + Comme vous le voyez, on utilise ici le même principe que pour la classe `Img` : + on **surcharge juste le constructeur** en invoquant celui de `Component` (`super(...)`) + et en lui passant les bons `tagName`, `attribute` et `children`. + + Dans le `src/main.js`, testez votre classe avec le code suivant : ```js const pizzaThumbnail = new PizzaThumbnail(data[0]); document.querySelector( '.pageContent' ).innerHTML = pizzaThumbnail.render(); ``` - ... le code HTML généré sera : + + Si votre classe `Component` est correctement codée + (c'est à dire qu'elle prend en compte tous les cas limites) + alors le code HTML généré sera le suivant : + ```html <article class="pizzaThumbnail"> <a href="https://images.unsplash.com/photo-1532246420286-127bcd803104?fit=crop&w=500&h=300"> @@ -75,6 +102,7 @@ _**L'objectif de cet exercice est d'utiliser une classe à l'intérieur d'une au </a> </article> ``` + ... et le rendu obtenu dans la page sera celui-ci : <img src="images/readme/pizzaland-04.png" > -- GitLab