Estado Global en React: Uso de Context y Provider para Notificaciones

Clase 13 de 31Curso de React Avanzado

Resumen

¿Cómo manejar el estado global en React con Provider y Context?

En el universo de React, existen diferentes maneras de manejar el estado de la aplicación, uno de los aspectos más cruciales para lograr un desarrollo eficiente y funcional. La implementación más común es mediante el uso del estado local, pero cuando hablamos de una aplicación de mayor envergadura, el estado global se convierte en una necesidad. Aquí es donde entra en juego el uso de React Context y el patrón Provider. Este enfoque permitirá compartir datos y funciones entre varios componentes sin tener que pasar props de un componente a otro.

¿Cómo configurar un proyecto con Bit y React?

Para iniciar el desarrollo de nuestra aplicación con React y utilizar el estado global, es esencial configurar correctamente nuestro entorno de trabajo. Siguiendo los pasos a continuación, podrás tener tu proyecto listo en poco tiempo:

  1. Creación del proyecto: Utiliza el comando npm create bit myReactContextApp para iniciar el proyecto.
  2. Selecciona las tecnologías: Al configurar, elige React con TypeScript.
  3. Accede al proyecto: Ingresa al directorio del proyecto con cd myReactContextApp.
  4. Instala las dependencias necesarias: Ejecuta npm install.
  5. Verifica tu ambiente de desarrollo: Usa npm run dev para correr el servidor local y revisa el proyecto inicial en el navegador en la ruta que te indica.

¿Cómo crear un proveedor de estado global?

El uso del patrón Provider y React Context facilita compartir estados o funciones entre los componentes de tu aplicación. A continuación, te presento los pasos para crear un Provider para gestionar las notificaciones en la aplicación.

  1. Estructura del proyecto: En la carpeta src (source), crea una nueva carpeta llamada context.
  2. Creación del Notification Context: Dentro de esta carpeta, crea un archivo llamado notificationContext.jsx.
  3. Implementación del Provider:
    • Define una función NotificationProvider que gestionará el estado global.
    • Utiliza useState para crear un estado local que muestre u oculte mensajes de notificación.
    • Implementa funciones para mostrar (showNotification) y ocultar (hideNotification) las notificaciones.
    • Exporta el contexto con createContext y define el tipo de datos que gestionará.
import React, { useState, createContext } from 'react';

// Creación del contexto
export const NotificationContext = createContext(undefined);

export const NotificationProvider = ({ children }) => {
    const [message, setMessage] = useState(null);

    const showNotification = (msg) => {
        setMessage(msg);
        setTimeout(() => hideNotification(), 3000);
    };

    const hideNotification = () => setMessage(null);

    return (
        <NotificationContext.Provider value={{ message, showNotification, hideNotification }}>
            {children}
        </NotificationContext.Provider>
    );
};

¿Qué consideraciones tener al usar Context?

  • Uso de Typescript: Al utilizar TypeScript, puedes definir tipos de datos que ayudarán a mantener el código más legible y fácil de gestionar.
  • Renderización de componentes: El NotificationProvider debe envolver la aplicación o aquellos componentes que necesiten acceso al estado global.
  • Estructura de retorno: Además de retornar valores específicos, asegúrate de que el Provider pueda renderizar hijos de cualquier componente en su interior.

¿Cómo utilizar el contexto en los componentes?

Una vez establecido el Provider, es crucial que los componentes puedan acceder a este estado. Para lograrlo, simplemente utiliza el hook useContext. Aunque en esta clase se enfocó en la creación del contexto y Provider, el siguiente paso será integrar un custom hook y componentes que puedan gestionar las notificaciones.

¡La implementación de un estado global te permitirá llevar tus aplicaciones React al siguiente nivel y manejar interacciones complejas de manera eficiente! Asegúrate de practicar y experimentar con diferentes estructuras y personalizaciones, esto te ayudará a fortalecer tu comprensión y tus habilidades en React.