Maison > interface Web > js tutoriel > Maîtriser le hook useContext de React : un guide simple sur la gestion des états partagés

Maîtriser le hook useContext de React : un guide simple sur la gestion des états partagés

Susan Sarandon
Libérer: 2025-01-05 03:31:38
original
673 Les gens l'ont consulté

Mastering React

useContext Hook dans React

Le hook useContext est un hook React intégré qui vous permet d'accéder directement à la valeur d'un Context, sans avoir besoin d'utiliser le Context.Consumer composant. Il simplifie l'accès aux données globales ou partagées dans une application React, telles que l'authentification des utilisateurs, les paramètres de thème ou les préférences de langue, sans transmettre manuellement les accessoires à chaque niveau de l'arborescence des composants.


Qu'est-ce que le contexte dans React ?

Avant de plonger dans useContext, il est important de comprendre le Context. Dans React, Context fournit un moyen de partager des valeurs telles que la configuration ou l'état dans l'arborescence des composants sans avoir à transmettre manuellement les accessoires à chaque niveau.

  • Context.Provider est utilisé pour envelopper une partie de l'arborescence des composants et fournir une valeur à tous les composants à l'intérieur de cette arborescence.
  • useContext permet à un composant de consommer la valeur fournie par un Context.Provider.

Syntaxe de useContext

Le hook useContext accepte un seul argument : l'objet Context et renvoie la valeur de contexte actuelle.

const contextValue = useContext(MyContext);
Copier après la connexion
Copier après la connexion
  • MyContext : Il s'agit de l'objet contextuel que vous avez créé à l'aide de React.createContext().

  • contextValue : Il s'agit de la valeur fournie par le contexte. Cela peut être n'importe quoi : un objet, une chaîne, un nombre, etc.


Comment fonctionne useContext

  1. Créer un contexte : Vous créez d'abord un Context en utilisant React.createContext(). Ce contexte contient la valeur par défaut.
   const MyContext = React.createContext('default value');
Copier après la connexion
Copier après la connexion
  1. Fournir le contexte : Le composant Context.Provider est utilisé pour fournir une valeur aux composants de son arborescence. N'importe quel composant de cette arborescence peut accéder à la valeur de contexte à l'aide de useContext.
   const App = () => {
     const user = { name: 'John Doe', age: 30 };

     return (
       <MyContext.Provider value={user}>
         <ComponentA />
       </MyContext.Provider>
     );
   };
Copier après la connexion
  1. Contexte de consommation : Dans n'importe quel composant enfant, utilisez useContext pour accéder à la valeur à partir du contexte.
   const ComponentA = () => {
     const user = useContext(MyContext); // Access the context value

     return (
       <div>
         <p>{user.name}</p>
         <p>{user.age}</p>
       </div>
     );
   };
Copier après la connexion
  • Dans cet exemple, ComponentA peut accéder à l'objet utilisateur (fourni par MyContext.Provider) sans le recevoir explicitement via les accessoires.

Exemple : utilisation de useContext pour le changement de thème

Voici un exemple dans lequel nous utilisons useContext pour une simple fonctionnalité de changement de thème.

Étape 1 : Créer un contexte

const contextValue = useContext(MyContext);
Copier après la connexion
Copier après la connexion

Étape 2 : Fournissez le contexte

Enveloppez votre application avec ThemeContext.Provider pour fournir une valeur (thème actuel).

   const MyContext = React.createContext('default value');
Copier après la connexion
Copier après la connexion

Étape 3 : Consommer le contexte

Dans ComponentA, vous pouvez accéder au thème actuel en utilisant useContext.

const ComponentA = () => {
  const thème = useContext(ThemeContext); // Accéder au thème actuel

  retour (
    <div>



<ul>
<li>
<strong>Explication :</strong>

<ul>
<li>
L'application fournit la valeur contextuelle du thème (« clair » ou « sombre »).</li>
<li>
ComponentA utilise useContext pour consommer le thème actuel et modifier son style en conséquence.</li>
</ul>


</li>

</ul>


<hr>

<h3>
  
  
  <strong>Plusieurs Contextes dans un composant</strong>
</h3>

<p>Vous pouvez consommer plusieurs contextes dans un seul composant. Par exemple, consommer à la fois ThemeContext et UserContext :<br>
</p>

<pre class="brush:php;toolbar:false">const UserContext = createContext({ nom : 'Alice' });
const ThemeContext = createContext('light');

const App = () => {
  retour (
    <ThemeContext.Provider value="dark">
      <UserContext.Provider value={{ nom : 'Bob' }}>
        <Composant />
      </UserContext.Provider>
    </ThemeContext.Provider>
  );
} ;

const Composant = () => {
  const thème = useContext(ThemeContext);
  const utilisateur = useContext(UserContext);

  retour (
    <div>




<hr>

<h3>
  
  
  <strong>Quand utiliser useContext</strong>
</h3>

<p>Le hook <strong>useContext</strong> est plus utile lorsque :</p>

<ol>
<li>
<strong>Éviter le perçage des accessoires :</strong> Passer des accessoires en profondeur à travers de nombreuses couches de composants peut devenir fastidieux. En utilisant le contexte, vous pouvez éviter cela et autoriser les composants à n'importe quel niveau de l'arborescence à consommer des valeurs partagées.</li>
<li>
<strong>Gestion de l'état global :</strong> Lorsque vous avez besoin que l'état global (comme le thème, l'authentification, les préférences utilisateur) soit accessible par de nombreux composants dans différentes parties de l'application.</li>
<li>
<strong>Partage de données entre composants :</strong> S'il est nécessaire de partager des données communes (par exemple, informations utilisateur, paramètres, configuration) entre plusieurs composants, useContext fournit une solution propre.</li>
</ol>


<hr>

<h3>
  
  
  <strong>Considérations relatives aux performances</strong>
</h3>

<p>Bien que <strong>useContext</strong> soit puissant, il peut provoquer de nouveaux rendus si la valeur du contexte change. Chaque fois que la valeur du contexte est mise à jour, tous les composants qui consomment ce contexte seront restitués. Pour optimiser cela :</p>
Copier après la connexion
  • Mémorisez les valeurs de contexte : assurez-vous que la valeur de contexte elle-même ne change pas inutilement.
  • Fournisseurs de contexte fractionné : si votre application comporte plusieurs éléments de données partagées, divisez-les en différents contextes pour minimiser les nouveaux rendus inutiles.

Résumé de useContext Hook

  • useContext vous permet de consommer des valeurs de contexte directement dans les composants fonctionnels.
  • Vous créez un Context à l'aide de React.createContext() et utilisez useContext pour accéder à la valeur de contexte dans n'importe quel composant encapsulé par Context.Provider.
  • Utile pour éviter le perçage d'accessoires et partager des données sur plusieurs composants sans passer les accessoires manuellement.
  • L'optimisation des performances de consommation du contexte nécessite une gestion minutieuse des valeurs de contexte et de la mémorisation.

Conclusion

Le hook useContext est un outil essentiel pour gérer l'état partagé dans les applications React. Il simplifie le processus de consommation des valeurs de contexte et permet d'éviter les perçages d'accessoires inutiles, rendant votre code React plus lisible et maintenable. En tirant parti de useContext, vous pouvez créer des applications plus flexibles et évolutives avec un état partagé facilement accessible par n'importe quel composant de l'arborescence.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal