Introducci贸n a React y Preparaci贸n del Entorno

1

Aprende React: Desarrollo Web y Mobile Eficiente y Escalable

Fundamentos de Componentes y JSX

2

Creaci贸n de Componentes con JavaScript y React

3

Creaci贸n de Componentes Reutilizables con Props en React

Quiz: Fundamentos de Componentes y JSX

Manejo del Estado y Hooks B谩sicos

4

Estado Local en React: Uso de useState para Contadores

5

Creaci贸n y manejo de estados en un Toggle Button con React

6

Eventos y manejo de estado en React: name form interactivo

7

Uso de useEffect para Manejar Efectos Secundarios en React

Quiz: Manejo del Estado y Hooks B谩sicos

Estilizaci贸n de Componentes

8

Estilos en React: CSS, SaaS y M贸dulos CSS

9

Estilos en L铆nea en React: Uso y Mejores Pr谩cticas

10

Creaci贸n de Botones Reactivos con Styled Components en React

11

Instalaci贸n y Uso de Tailwind CSS en Proyectos Web

Quiz: Estilizaci贸n de Componentes

Trabajo con Datos y APIs

12

Creaci贸n de Componentes con Datos Est谩ticos en React

13

Creaci贸n de un Componente User List con Fetch en React

14

Manejo de Errores y Carga en Fetch para Componentes React

15

Optimizaci贸n de Fetch con useEffect y Dependencias en React

Quiz: Trabajo con Datos y APIs

Componentes Avanzados y Estado Global

16

Manejo de estados complejos en React con useReducer

17

Context API en React: Manejo de Estados Globales y Proveedores

18

Creaci贸n de Hooks Personalizados en React para Contadores Reutilizables

19

Optimizaci贸n de Componentes en React con React.memo y Hooks

Quiz: Componentes Avanzados y Estado Global

Introducci贸n a TypeScript en React

20

Componentes con TypeScript en React: Tipado de Props y Funciones

21

Tipado de Estados y Funciones en TypeScript para React

22

Tipado de useReducer y Context API en TypeScript

Quiz: Introducci贸n a TypeScript en React

Nuevas Caracter铆sticas de React 19

23

Novedades y Mejoras en React 19 para Desarrolladores

24

Fundamentos y Actualizaci贸n Continua en React

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de React.js

Curso de React.js

Estefany Aguilar

Estefany Aguilar

Context API en React: Manejo de Estados Globales y Proveedores

17/24
Recursos

La gesti贸n de estados globales en React es una habilidad fundamental para desarrolladores que buscan crear aplicaciones escalables y mantenibles. Context API ofrece una soluci贸n elegante para compartir datos entre componentes sin necesidad de pasar props manualmente a trav茅s de m煤ltiples niveles. En este art铆culo, exploraremos c贸mo implementar un sistema de temas (claro/oscuro) utilizando Context API, una herramienta poderosa que permite la comunicaci贸n eficiente entre componentes.

驴Qu茅 es un estado global y por qu茅 necesitamos Context API?

Un estado global en React nos permite compartir datos entre componentes sin importar d贸nde se encuentren en el 谩rbol de componentes. Esto es especialmente 煤til cuando:

  • Necesitamos que m煤ltiples componentes accedan a los mismos datos
  • Queremos evitar el "prop drilling" (pasar props a trav茅s de m煤ltiples niveles de componentes)
  • Buscamos centralizar la l贸gica de estado para facilitar su mantenimiento

Context API es una herramienta nativa de React que nos permite crear estos estados globales de manera sencilla. A diferencia de soluciones como Redux, Context API viene integrado en React y es ideal para casos de uso m谩s simples como el manejo de temas, autenticaci贸n o preferencias de usuario.

驴C贸mo implementar un sistema de temas con Context API?

Para implementar un sistema de temas (claro/oscuro) con Context API, necesitamos seguir tres pasos principales:

  1. Crear el contexto
  2. Implementar un proveedor (provider)
  3. Consumir el contexto desde los componentes

Veamos cada uno de estos pasos en detalle:

Creando el contexto y el proveedor

El primer paso es importar createContext de React y crear nuestro contexto:

import { createContext, useState } from 'react';

const ThemeContext = createContext();

A continuaci贸n, necesitamos crear un proveedor que encapsule el estado y proporcione los m茅todos para manipularlo:

function ThemeProvider({ children }) {
  const [theme, setTheme] = useState('light');
  
  const toggleTheme = () => {
    setTheme(prevTheme => prevTheme === 'light' ? 'dark' : 'light');
  };
  
  return (
    <ThemeContext.Provider value={{ theme, toggleTheme }}>
      {children}
    </ThemeContext.Provider>
  );
}

Este proveedor tiene varias caracter铆sticas importantes:

  • Mantiene un estado local (theme) inicializado como 'light'
  • Proporciona una funci贸n toggleTheme para alternar entre temas
  • Envuelve a sus componentes hijos con el Provider del contexto
  • Pasa tanto el estado como la funci贸n para modificarlo a trav茅s del prop value

El par谩metro children es crucial, ya que permite que el proveedor envuelva cualquier componente que necesite acceder al contexto.

Consumiendo el contexto en componentes

Una vez que tenemos nuestro contexto y proveedor, podemos crear componentes que consuman este contexto. Para ello, utilizamos el hook useContext:

import { useContext } from 'react';

function ThemeButton() {
  const { theme, toggleTheme } = useContext(ThemeContext);
  
  return (
    <button 
      onClick={toggleTheme}
      style={{
        backgroundColor: theme === 'light' ? '#ffffff' : '#333333',
        color: theme === 'light' ? '#000000' : '#ffffff'
      }}
    >
      Cambiar tema
    </button>
  );
}

Este componente:

  • Extrae theme y toggleTheme del contexto usando useContext
  • Utiliza estos valores para definir el estilo del bot贸n y su comportamiento
  • Cambia su apariencia bas谩ndose en el tema actual

Implementando el sistema en la aplicaci贸n

Para que todo funcione correctamente, debemos envolver nuestra aplicaci贸n (o la parte que necesita acceso al contexto) con el proveedor:

function App() {
  return (
    <ThemeProvider>
      <div className="App">
        <ThemeButton />
        {/* Otros componentes */}
      </div>
    </ThemeProvider>
  );
}

De esta manera, cualquier componente dentro de ThemeProvider puede acceder al contexto del tema.

Ventajas de usar Context API para estados globales

El uso de Context API para manejar estados globales ofrece varias ventajas:

  • Simplicidad: Es m谩s sencillo de implementar que otras soluciones de gesti贸n de estado
  • Integraci贸n nativa: Viene incluido en React, sin necesidad de bibliotecas adicionales
  • Rendimiento optimizado: React optimiza las renderizaciones cuando se actualiza el contexto
  • Flexibilidad: Permite crear m煤ltiples contextos para diferentes aspectos de la aplicaci贸n

Context API es ideal para casos de uso como:

  • Temas de la aplicaci贸n (claro/oscuro)
  • Estado de autenticaci贸n
  • Preferencias de usuario
  • Configuraciones de idioma

La implementaci贸n que hemos visto demuestra c贸mo podemos crear un sistema de temas completo con pocas l铆neas de c贸digo, manteniendo nuestros componentes limpios y enfocados en su responsabilidad principal.

La gesti贸n de estados globales es una habilidad fundamental en el desarrollo con React. Context API nos proporciona una herramienta poderosa y flexible para compartir datos entre componentes sin complicaciones innecesarias. 驴Has implementado Context API en tus proyectos? Comparte tu experiencia en los comentarios.

Aportes 10

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Definitivamente estaba muchisimo mejor el curso de react con vite y tailwind que habia antes, ya que podiamos ver como se usan las cosas en un contexto practico y real utilizando buenas practicas. En la secuencia de estos ultimos cursos que hicieron se abordan los temas de manera general, el concepto, pero por experiencia les digo que es mas facil entender los conceptos en ejemplos practicos de la vida real y aplicando buenas practicas. De la manera en que estan planteadas las clases, para alguien que no tiene experiencia trabajando como desarrollador y que no ha visto o que puede encontrar en la vida real, le va a ser muy cmplicado relacionar las cosas. Se los digo porque con el curso de vite y tailwind que habia literalmente pas茅 mi primer prueba tecnica para entrar a mi primer empresa hace ya mas de 2 a帽os. y este curso la verdad no ayuda a interiorizar los conceptos y ver la utilidad. Una lastima la verdad, al menos hubieran dejado los cursos que habian antes, porque lo mismo pas贸 con el de react de juanDC, era buenisimo, y lo quitaron.... mal mal. no digo que este esta del todo mal, pero ahora ya qued como un curso super hiper basico de react, no como ls de antes que te ayudaban a ver los conceptos en la practica un poco mas real.
Buena clase para comprender el uso del Context, pero es una buena practica tenerlo todo por separado para un mejor uso por ejemplo yo le realice un refactor asi: ```js //App.jsx import ThemeButton from './Components/ThemeButton/ThemeButton' import { ThemeProvider } from './Context/Context' import './Main.css' function App() { return ( <> <ThemeProvider> <ThemeButton/> </ThemeProvider> ) } export default App ``````js //Context.jsx import { useState, useContext, createContext } from 'react' export const ThemeContext = createContext(); export function ThemeProvider({ children }){ const [theme, setTheme] = useState('light'); const toggleTheme = () => { setTheme((prevTheme) => (prevTheme === 'light' ? 'dark' : 'light')); } return ( <ThemeContext.Provider value={{ theme, toggleTheme }}> {children} </ThemeContext.Provider> ) } ``````js //ThemeButton import { useContext } from 'react'; import { ThemeContext } from '../../Context/Context'; function ThemeButton(){ const { theme, toggleTheme } = useContext(ThemeContext); return ( <button onClick={toggleTheme} className={`theme-${theme}`}> Cambiar tema </button> ) } export default ThemeButton ```
Hola, antes de comentar cosas sobre las malas pr谩cticas y buscar ejemplos reales que usar en el trabajo, recuerden que esto es parte de una ruta y por lo tanto aqu铆 solo te est谩n ense帽ando los fundamentos. Si esperas que en un curso de 2 hora en video te de para hacerte una carrera debes entender que en 2 horas no puedes abarcar la totalidad que React puede ofrecer. Sean pacientes y si sabes que son malas pr谩cticas habla mejor de ti el sugerir aprenderlas que el criticar a quien est谩 ense帽ando en el curso. Si quieres aplicar buenas pr谩cticas, la mejor ser铆a apoyar a los que no entienden y quien sabe si ma帽ana seas t煤 el que est茅 dando los cursos.
Tengo una duda, 驴de d贸nde sale el prevTheme? no se si se complemente con otra clase, o si deba investigar m谩s, pero tengo esa duda.
Hasta aqu铆 el curso a sido un poco confuso y con malas practicas. Me pareci贸 mejor la saga de cursos de Juan DC, donde se construye una app desde cero a experto, con todos sus Hooks.
Este es el primer contacto que tengo con React y decid铆 tomar el curso para ver como mejorar un proyectito personal que estoy realizando que not茅 se extiende mucho solo con JavaScript puro. Creo es buena inversi贸n seguirle con este framework. Estefany, tu curso introductorio me ha ayudado a darme una idea de como mejorar el frontend con estas tecnolog铆as. Thanks
Wow, esta clase me dejo viendo estrellitas como funciona esto de los contextos, no hay mas que seguir practicando y aplicando ejemplos sobre proyectos reales para agarrarle la onda, saludos a todos
Si quieren probar a separar el c贸digo, yo cre茅 los componentes ThemeButton y ThemeProvider, y el ThemeContext lo cre茅 en un archivo separado para poder importarlo tanto en ThemeButton como ThemeContext
Con Next.js, puedes compartir un contexto global entre componentes del cliente y del servidor utilizando la Context API de React. Al envolver tu aplicaci贸n con el proveedor del contexto, todos los componentes, tanto del lado del cliente como del servidor, pueden acceder a los datos del contexto. Esto permite que los estados y datos se gestionen de forma centralizada, facilitando la comunicaci贸n y el manejo del estado en aplicaciones isom贸rficas. Adem谩s, puedes combinar esto con Server Components de Next.js para optimizar la carga de datos.
Pero porque la malas practicas tan horribles?