Composants Stateful vs Stateless en React sont des concepts essentiels à comprendre pour gérer l’état et le cycle de vie de vos applications React. En maîtrisant ces deux types de composants, vous pourrez créer des interfaces utilisateur plus performantes et maintenables. Découvrons comment ils fonctionnent et comment les implémenter à travers des exemples concrets de code.

Introduction aux Composants Stateful vs Stateless en React

En React, un composant stateful est un composant qui gère son propre état interne à l’aide du hook useState ou de la classe Component de React, alors qu’un composant stateless ne gère pas son propre état et utilise généralement des props pour recevoir et afficher les données. Les composants stateless sont souvent appelés “composants fonctionnels” car ils sont écrits sous forme de fonctions simples.

Créer des Composants Stateless en React

Commençons par créer un composant stateless. Les composants fonctionnels (stateless) sont des fonctions JavaScript ordinaires qui prennent des props en argument et retournent des éléments React. Voici un exemple simple :

import React from 'react';

const Greeting = (props) => {
  return 

Bonjour, {props.name}!

; }; export default Greeting;

Créer des Composants Stateful en React

Pour créer un composant stateful, nous pouvons utiliser la classe Component de React ou le hook useState. Voici comment procéder :

Utilisation de la Classe Component

import React, { Component } from 'react';

class Counter extends Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  increment = () => {
    this.setState({ count: this.state.count + 1 });
  };

  render() {
    return (
      

Compteur : {this.state.count}

); } } export default Counter;

Utilisation du Hook useState

import React, { useState } from 'react';

const Counter = () => {
  const [count, setCount] = useState(0);

  return (
    

Compteur : {count}

); }; export default Counter;

Quand Utiliser des Composants Statefull ou Stateless

Il est important de savoir quand utiliser des composants stateful ou stateless. En règle générale :

  • Utilisez des composants stateful lorsque vous avez besoin de gérer un état local, de suivre l’entrée de l’utilisateur ou de modifier l’apparence ou le comportement du composant en fonction des actions de l’utilisateur.
  • Utilisez des composants stateless lorsque vous pouvez tout gérer via des props et des états parentaux, ce qui facilite la compréhension et le test du composant.

Exemples Avancés de Composants Statefull et Stateless

Communication Entre Composants

Voyons comment les composants stateful et stateless peuvent communiquer entre eux pour échanger des données et des événements. Prenons l’exemple d’un parent stateful qui transmet des props à un enfant stateless :

import React, { useState } from 'react';
import ChildComponent from './ChildComponent';

const ParentComponent = () => {
  const [message, setMessage] = useState("Salut depuis le parent!");

  const updateMessage = () => {
    setMessage("Le message a été mis à jour!");
  };

  return (
    
); }; export default ParentComponent; const ChildComponent = (props) => { return (

{props.message}

); }; export default ChildComponent;

Gestion de Formulaire avec Composants Statefull

Une utilisation courante des composants stateful est la gestion des formulaires. Voici un exemple où nous utilisons un composant stateful pour gérer un formulaire de connexion :

import React, { useState } from 'react';

const LoginForm = () => {
  const [username, setUsername] = useState('');
  const [password, setPassword] = useState('');

  const handleSubmit = (event) => {
    event.preventDefault();
    // Logic for handling form submission
    console.log({ username, password });
  };

  return (
    
setUsername(e.target.value)} />
setPassword(e.target.value)} />
); }; export default LoginForm;

Utilisation Avancée de Hooks dans les Composants Stateful

Les hooks comme useEffect et useReducer peuvent être utilisés pour gérer des cas d’utilisation plus complexes dans les composants stateful. Par exemple, useEffect est souvent utilisé pour effectuer des appels API lorsque le composant est monté :

import React, { useState, useEffect } from 'react';

const DataFetchingComponent = () => {
  const [data, setData] = useState([]);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => {
        setData(data);
        setLoading(false);
      });
  }, []); // Empty dependency array means this effect runs once when the component mounts

  return (
    
{loading ?

Chargement...

:
    {data.map(item =>
  • {item.name}
  • )}
}
); }; export default DataFetchingComponent;

Conclusion

Les composants stateful et stateless en React jouent chacun un rôle unique et crucial dans la construction d’applications modernes. Les composants stateless sont parfaits pour les affichages simples et les composants stateful permettent de gérer des états internes et des interactions utilisateurs plus complexes. Continuez à expérimenter avec ces concepts pour maîtriser la création d’interfaces utilisateur performantes et maintenables. Pour plus de tutoriels sur React, consultez notre article sur la création de sites interactifs avec React et Redux. Pour apprendre à utiliser les hooks dans React, lisez notre guide complet sur les hooks en React.

Learnify Formation React Offre 50%

Les Composants Stateful vs Stateless en React ne se limitent pas aux simples exemples de gestion de compteurs ou de messages. Dans les applications réelles, ces composants interagissent souvent avec des API pour récupérer ou envoyer des données. En utilisant des hooks comme useEffect et useContext, les développeurs peuvent gérer des opérations asynchrones et des états globaux de manière efficace.

Un autre aspect important de la gestion des états avec React est d’éviter les re-rendus inutiles des composants. Les fonctionnalités d’optimisation comme React.memo et useCallback sont souvent utilisées pour mémoriser les composants stateless et éviter ces re-rendus. Le hook useMemo peut également être utilisé pour mémoriser les valeurs calculées pour des inputs complexes.

Utilisation des State et Props avec les Composants

Le concept de State dans les composants React est fondamental. Le State permet de rendre un composant réactif aux changements d’état et aux conditions dynamiques. Par exemple, un formulaire de connexion qui change son état pour afficher un message d’erreur lorsque l’utilisateur entre des informations incorrectes.

Quant aux props, ils sont utilisés pour transmettre des données d’un composant parent à un composant enfant. Les props sont immuables, ce qui signifie qu’un composant enfant ne peut pas modifier les props qu’il reçoit. Cette distinction entre props et state est cruciale pour comprendre comment React gère les données et les mises à jour des composants.

Composants Contrô

Categorized in:

React et Redux,

Tagged in: