Sobes.tech
Junior

Quelle est la différence entre les props et l'état dans React?

sobes.tech IA

Réponse de l'IA

Les props (propriétés) et l'état (state) sont deux mécanismes clés pour gérer les données dans les composants React.

Props :

  • Sont transmises du composant parent au composant enfant.
  • Sont immuables à l'intérieur du composant enfant.
  • Permettent l'interaction entre composants.
  • Définissent l'apparence ou le comportement du composant en fonction des données d'entrée.

État :

  • Appartient à un composant spécifique et est géré par lui.
  • Est mutable à l'intérieur du composant.
  • Représente des données qui peuvent changer au fil du temps et influencer le rendu du composant.
  • La modification de l'état provoque la re-rendu du composant et de ses enfants.

Les principales différences peuvent être présentées sous forme de tableau :

Caractéristique Props État
Source Composant parent Le composant lui-même
Mutabilité Immuables Mutable
Gestion Transmises de l'extérieur Gérée à l'intérieur du composant
But Afficher des données externes, configuration Gérer l'état interne du composant
La modification provoque Re-rendu lors d'une modification dans le parent Re-rendu lors d'une modification dans le composant actuel

Exemple d'utilisation des props :

// ParentComponent.jsx
import React from 'react';
import ChildComponent from './ChildComponent';

function ParentComponent() {
  const message = "Bonjour du parent!";
  return (
    <div>
      <ChildComponent text={message} /> {/* Transmission de la prop "text" */}
    </div>
  );
}

export default ParentComponent;
// ChildComponent.jsx
import React from 'react';

function ChildComponent(props) {
  return (
    <p>{props.text}</p> {/* Utilisation de la prop "text" */}
  );
}

export default ChildComponent;

Exemple d'utilisation de l'état :

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

function Counter() {
  const [count, setCount] = useState(0); // Initialisation de l'état "count"

  const increment = () => {
    setCount(count + 1); // Modification de l'état
  };

  return (
    <div>
      <p>Compteur : {count}</p>
      <button onClick={increment}>Augmenter</button>
    </div>
  );
}

export default Counter;