GithubHelp home page GithubHelp logo

dojo-3's Introduction

Dojo React - Product cart

Ce dojo est l'occasion parfaite de pratiquer l'affichage de listes, la gestion du state, des formulaires et des évènements !

Pour commencer, clonez ce dépot et placez-vous à l'interieur du dossier coresspondant.

Lancer l'application

$ npm install && npm start

Objectif

Le but général est de créer une petite application React permettant de gérer un panier de produits.

Screenshot de l'application finale

Jettez un oeil à App.css afin d'utiliser uniquement les classes existantes pour styliser l'application a minima.

Conseil : Comme d'habitude, gardez bien votre console ouverte pendant le développement, pour ne pas laisser passer de warning ou d'erreur quelconque :)

Instructions pour le dojo

Etape 1 : Afficher les produits dans un tableau

Dans App.js vous avez quelques exemples de produits dans la constante initialProductList.

Il faut afficher ces 3 produits dans un tableau qui possèdera les colonnes :

  • 'Produit' (name)
  • 'Prix unitaire' (price)
  • 'Quantité' (quantity)
  • 'Prix total' (price * quantity)

Etape 2 : Permettre de changer la quantité d'un produit dans la liste

Dans le tableau, la colonne 'Quantité' ne devrait contenir que des <input> (pensez au bon type d'input, avec des contraintes cohérentes comme on parle d'une quantité) :

  • Ces inputs doivent êtres controllés par React.
  • Les données des produits devront être gérées dans le state.
  • Le prix total de l'item devrait se mettre à jour automatiquement à l'édition d'une quantité pour un item de la commande.

Pour approfondir (étapes bonus)

Etape 3 : Afficher le total de la commande

En dessous du tableau, affichez le montant total du panier, qui se calcule en faisant la somme des prix totaux (prix * quantité) des items du panier.

Conseil : Vous pouvez utiliser reduce.

Etape 4 : Suppression d'un produit de la liste

Dès que l'on renseigne une quantité de 0, une pop-up window.confirm apparait pour demander à l'utilisateur "Etes-vous sûr de bien vouloir retirer ce produit de la liste ?" :

  • S'il confirme, on le fait (sans blague !).
  • Sinon sa saisie de quantité (0) est annulée (rien ne se passe, la quantité n'est pas mise à jour).

Hint : https://reactjs.org/docs/handling-events.html (dernière section)

Etape 5 : Ajout d'un produit dans la liste

Creez un formulaire pour ajouter un produit :

  • Ce dernier contiendra deux champs : 'Nom' et 'Prix', ainsi qu'un bouton 'Ajouter'.
  • Dès que l'on souhaite ajouter un produit, il faut s'assurer que le nom est bien présent et que la quantité a une valeur cohérente (pensez aux contraintes d'input HTML5 !).
  • Par défaut, un nouveau produit dans la liste aura une quantité de 1.
  • Un nouveau produit devra posséder un identifiant (id) généré aléatoirement au moment de la création.

dojo-3's People

Contributors

comicscrip avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.