Maison > interface Web > js tutoriel > Guide didacticiel sur « useContext » et « useReducer » dans React : gérer efficacement l'état global

Guide didacticiel sur « useContext » et « useReducer » dans React : gérer efficacement l'état global

Patricia Arquette
Libérer: 2024-11-11 11:16:02
original
535 Les gens l'ont consulté

Tutorial Guide to

Un guide complet sur useContext et useReducer dans React : gérer efficacement l'état global

Introduction

Dans React, la gestion de l'état est cruciale pour créer des applications dynamiques et interactives. Bien que useState et useReducer soient parfaits pour gérer l'état des composants locaux, que se passe-t-il lorsque vous devez gérer l'état global de plusieurs composants ? Entrez useContext et useReducer, deux hooks qui peuvent être utilisés ensemble pour gérer efficacement la gestion de l'état au niveau mondial.

Dans cet article, nous explorerons comment combiner useContext et useReducer pour créer un système de gestion d'état robuste pour votre application React. Nous aborderons les bases des deux hooks, puis vous guiderons dans la création d'une application simple pour démontrer comment ils peuvent être utilisés ensemble pour gérer l'état global.

À la fin de ce guide, vous aurez une solide compréhension de :

  1. useContext : un hook pour partager l'état entre vos composants.
  2. useReducer : un hook pour gérer une logique d'état complexe.
  3. Combiner useContext et useReducer : Comment utiliser les deux hooks ensemble pour une solution d'état globale évolutive.

Commençons !


Comprendre useContext

Qu’est-ce que useContext ?

useContext est un hook React qui vous permet de partager l'état (ou toute autre valeur) dans votre arborescence de composants sans avoir besoin de transmettre manuellement les accessoires à chaque niveau. Ceci est utile lorsque vous devez fournir des données globales à plusieurs composants à la fois.

La syntaxe de useContext est :

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

Où MyContext est un objet contextuel créé par React.createContext().

Quand utiliser useContext ?

  • Pour partager l'état global ou les paramètres de configuration (par exemple, thème, authentification).
  • Lorsque le passage d'accessoires à travers de nombreux niveaux de composants imbriqués devient fastidieux.

Comprendre useReducer

Qu’est-ce qu’useReducer ?

useReducer est un hook React utilisé pour gérer un état qui implique une logique complexe ou lorsque l'état dépend d'états précédents. Il est souvent utilisé comme alternative à useState lorsque vos mises à jour d'état doivent être basées sur des actions et qu'il existe plusieurs types de changements d'état.

La syntaxe de useReducer est :

const value = useContext(MyContext);
Copier après la connexion
Copier après la connexion
  • réducteur : une fonction qui renvoie un nouvel état basé sur l'état et l'action actuels.
  • initialState : L'état initial de votre réducteur.
  • dispatch : Une fonction utilisée pour envoyer des actions au réducteur pour mettre à jour l'état.

Combinaison de useContext et useReducer

Lorsque vous combinez useContext et useReducer, vous pouvez partager un état complexe dans votre application tout en centralisant la logique des transitions d'état. Ceci est particulièrement utile lors de la gestion d'un état global qui doit être accessible depuis n'importe quel composant de votre application.

Pourquoi les combiner ?

  • État centralisé : useContext fournit la portée globale de l'état, et useReducer offre un moyen structuré de gérer les changements d'état complexes.
  • Mises à jour prévisibles : useReducer vous permet de gérer les transitions d'état de manière prévisible avec des actions et un réducteur, tandis que useContext garantit que votre état est disponible pour tous les composants.
  • Évolutivité : cette combinaison facilite la mise à l'échelle des applications qui doivent gérer l'état sur de nombreux composants.

Exemple de projet : une liste globale de tâches

Créons une application simple de liste de tâches dans laquelle nous gérons l'état global à l'aide de useContext et useReducer. L'application prendra en charge l'ajout, le basculement et la suppression de tâches.

Étape 1 : Créer le contexte et le réducteur

Nous commencerons par créer un contexte pour contenir notre état global et un réducteur pour gérer les actions.

const [state, dispatch] = useReducer(reducer, initialState);
Copier après la connexion

Explication

  • todoReducer : gère l'état de la liste de tâches, y compris l'ajout, le basculement et la suppression de tâches.
  • TodoContext : fournit un contexte global pour l'état de la liste de tâches.
  • TodoProvider : Il s'agit d'un composant wrapper qui fournit le contexte et le hook useReducer à tous ses enfants.

Étape 2 : créer le composant de liste de tâches

Maintenant, nous allons créer un composant qui affiche la liste de tâches et fournit la fonctionnalité permettant d'ajouter, de supprimer et de basculer entre des tâches.

import React, { createContext, useContext, useReducer } from 'react';

// Initial State
const initialState = [];

// Reducer Function
function todoReducer(state, action) {
  switch (action.type) {
    case 'ADD':
      return [...state, { id: Date.now(), text: action.payload, completed: false }];
    case 'TOGGLE':
      return state.map(todo =>
        todo.id === action.payload ? { ...todo, completed: !todo.completed } : todo
      );
    case 'REMOVE':
      return state.filter(todo => todo.id !== action.payload);
    default:
      return state;
  }
}

// Create Context
const TodoContext = createContext();

// Provide Context to App
export function TodoProvider({ children }) {
  const [state, dispatch] = useReducer(todoReducer, initialState);
  return (
    <TodoContext.Provider value={{ state, dispatch }}>
      {children}
    </TodoContext.Provider>
  );
}
Copier après la connexion

Récapitulatif et conclusion

Dans cet article, nous avons combiné useContext et useReducer pour gérer l'état global dans une application React. Nous avons parcouru :

  1. useContext : Un hook pour fournir et consommer du contexte dans une arborescence de composants.
  2. useReducer : Un hook pour gérer une logique d'état complexe de manière prévisible et centralisée.
  3. Combiner les deux : Nous avons utilisé les deux hooks ensemble pour gérer une liste de tâches avec des actions pour ajouter, basculer et supprimer des tâches.

Ce modèle est hautement évolutif et, à mesure que la complexité de votre application augmente, useContext et useReducer peuvent vous aider à maintenir une solution de gestion d'état propre, prévisible et efficace. Expérimentez ces concepts et appliquez-les à vos projets pour une meilleure gestion des états !

Bon codage ! ?

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