React-tuto

Tutoriel React pour le cours d’IHM - MIASHS M2 2019-2020

Présentation

Le tutoriel consiste en la création d’une application web utilisant React.js comme librairie JavaScript. L’application utilise également le framework CSS Materialize pour le design.

Prérequis

• IDE web : Visual Studio Code, WebStorm

• Node.js et npm

# [Facultatif]
# Obtenir directement les dernières versions de Node et npm avec n
npm install n -g
n latest

• [Facultatif] React Developer Tools

======

UberFighter

UberFighter est une plateforme web permettant de participer à des combats de rues à la manière d’un site de rencontre. L’utilisateur peut provoquer un adversaire, qu’il pourra affronter si la provocation est mutuelle.

Le tutoriel va porter sur l’affichage des adversaires potentiels.

Initialisation

  1. Cloner le projet
     git clone https://github.com/Skiwa/React-tuto
    
  2. Installer les dépendances
     cd init
     npm install
    
  3. Lancer le projet
     npm start
    

Créer un composant App qui sera le point d’entrée

Définir le point d’entrée

Définir App comme point d’entrée

Créer les adversaires

Créer un composant portraitAdversaire

Afficher un composant portraitAdversaire

Passer des informations à portraitAdversaire

Boucler sur les sports

    <li>Sports :
        <ol></ol>
    </li>

Pour chaque sport, on va créer un élément li dans la liste

Pour faire ça, on utilise la fonction map.

En React, chaque élément de map() doit avoir un id donc on lui passe l’index actuel avec l’attribut key

Ajouter d’autres combattants

Gérer les états

Définir un état aEteProvoc

On veut fixer un état aEteProvoc = false par défault à un composant portraitAdversaire

Quand on fixe un état à l’initialisation d’un composant, on doit lui créer un constructeur et lui passer les props :

    //Constructeur
    constructor(props){
        super(props);

            //Fixe un état aEteProvoc par défaut
            this.state = {
                aEteProvoc: false
            }
        }

Afficher une classe en fonction de l’état

    <div className={this.state.aEteProvoc ? 'border-red' : ''}>
        //contenu
    </div>

Changer l’état au clic sur un bouton

    <button onClick={()=>{this.handleProvoc()}}>Provoquer {this.props.adversaire.prenom}</button>

[Optionnel] Tout mettre en forme graphiquement