Skip to main content

Cours n°2 : State, Events, CSS & Props

Introduction

Dans ce tutoriel, nous allons apprendre à créer des applications interactives en React en explorant les notions suivantes étape par étape :

  1. Composants React
  2. State pour gérer les données dynamiques
  3. Gestion des événements avec onClick et onChange
  4. Styles dynamiques et application de styles via des fichiers CSS séparés

Étape 1 : Création de Composants Simples

Qu’est-ce qu’un composant ?

Un composant est une brique fondamentale de React. Il représente une partie réutilisable de l’interface utilisateur.

Créez un Composant Fonctionnel Simple

Commençons par créer un composant qui affiche un message de bienvenue.

Welcome.jsx
function Welcome() {

return <h1>Bienvenue sur notre site !</h1>;
}

export default Welcome;

Explication :

  • Welcome est un composant fonctionnel qui retourne un élément JSX (<h1>).
  • Le composant est ensuite exporté pour être utilisé dans d’autres parties de l’application.

Utilisez ce composant dans App.js :

App.jsx
import Welcome from './Welcome';

function App() {
return (
<div>
<Welcome />
</div>
);
}

export default App;

Lancez l’application et vous verrez “Bienvenue sur notre site !” affiché.

Étape 2 : Utilisation du State

Qu’est-ce que le State ?

Le state est un moyen de stocker et de gérer des données dynamiques dans un composant React. Avec useState, nous pouvons mettre à jour ces données de manière réactive.

Ajoutez un Compteur Dynamique

Créez un composant qui affiche un compteur et un bouton pour l’incrémenter.

Counter.jsx
import { useState } from 'react';

function Counter() {
const [count, setCount] = useState(0); // Initialisation du state

return (
<div>
<p>Compteur : {count}</p>
<button onClick={() => setCount(count + 1)}>Incrémenter</button>
</div>
);
}

export default Counter;

Explication :

  • useState(0) initialise le compteur à 0.
  • setCount met à jour le compteur.
  • Lorsqu’on clique sur le bouton, le compteur est incrémenté de 1.

Ajoutez-le dans App.jsx :

App.jsx
import Counter from './Counter';

function App() {
return (
<div>
<Welcome />
<Counter />
</div>
);
}

export default App;

Vous verrez le compteur s’incrémenter chaque fois que vous cliquez sur le bouton.

Étape 3 : Gestion des Événements avec onChange

3.1 Création d’un Champ de Texte Dynamique

Nous allons créer un champ de saisie qui affiche en temps réel le texte saisi par l’utilisateur.

TextInput.jsx
import { useState } from 'react';

function TextInput() {
const [text, setText] = useState('');

return (
<div>
<input
type="text"
placeholder="Saisissez du texte"
onChange={(e) => setText(e.target.value)}
/>
<p>Texte saisi : {text}</p>
</div>
);
}

export default TextInput;

Explication :

  • onChange est un événement qui se déclenche chaque fois que l’utilisateur saisit quelque chose.
  • La valeur de l’input est récupérée via e.target.value et mise à jour dans le state text.

Ajoutez-le dans App.js :

App.css
import TextInput from './TextInput';

function App() {
return (
<div>
<Welcome />
<Counter />
<TextInput />
</div>
);
}

export default App;

Essayez de taper dans le champ : le texte apparaît en temps réel sous le champ de saisie.

Étape 4 : Styles Dynamiques avec CSS Inline

Modifier la Couleur d’un Élément avec useState

Nous allons créer une boîte dont la couleur change dynamiquement lorsqu’un bouton est cliqué.

StyledBox.jsx
import { useState } from 'react';

function StyledBox() {
const [isBlue, setIsBlue] = useState(false);

const boxStyle = {
width: '100px',
height: '100px',
backgroundColor: isBlue ? 'blue' : 'gray',
margin: '10px auto'
};

return (
<div>
<div style={boxStyle}></div>
<button onClick={() => setIsBlue(!isBlue)}>Changer la couleur</button>
</div>
);
}

export default StyledBox;

Explication :

  • Le state isBlue détermine la couleur de fond.
  • Le style est défini dynamiquement dans boxStyle.
  • Le bouton bascule la couleur entre bleu et gris.

Ajoutez-le dans App.jsx :

import StyledBox from './StyledBox';

function App() {
return (
<div>
<Welcome />
<Counter />
<TextInput />
<StyledBox />
</div>
);
}

export default App;

Étape 5 : Utilisation de Fichiers CSS Séparés

Ajoutez des Styles Externes

Nous allons appliquer des styles à un composant via un fichier CSS.


.box {
width: 150px;
height: 150px;
background-color: lightcoral;
color: white;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
border: 2px solid darkred;
border-radius: 10px;
margin: 20px auto;
}

Fichier : StyledComponent.jsx

StyledComponent.jsx

import './StyledComponent.css';

function StyledComponent() {
return (
<div className="box">
Je suis stylée !
</div>
);
}

export default StyledComponent;

Explication :

  • Les styles sont définis dans un fichier CSS séparé.
  • Le fichier est importé via import './StyledComponent.css'.

Ajoutez-le dans App.js :

import StyledComponent from './StyledComponent';

function App() {
return (
<div>
<Welcome />
<Counter />
<TextInput />
<StyledBox />
<StyledComponent />
</div>
);
}

export default App;

Conclusion

À travers ces étapes, vous avez appris à :

  • Créer des composants React.
  • Utiliser le state pour des données dynamiques.
  • Gérer des événements comme onClick et onChange.
  • Appliquer des styles dynamiques et utiliser des fichiers CSS séparés.

Vous pouvez maintenant combiner ces concepts pour créer des interfaces utilisateur interactives et élégantes avec React !