Contexto global de la aplicación
Clase 9 de 31 • Curso de React.js con Vite.js y TailwindCSS
Contenido del curso
Clase 9 de 31 • Curso de React.js con Vite.js y TailwindCSS
Contenido del curso
Santiago Lopera Naranjo
Juan Mercado
Andrés Julian Caro Restrepo
N40 M10
Luis Angel Olivárez Estrada
Óscar Andrés Ugarte De La Fuente
david cabrera
Vladimir Farrera Vera
Libian María Hernández Gil
Paola Magali Ortiz Trigüis
Ariel Emiliano Acevedo Posos
Miguel Angel Reyes Moreno
Miguel Negron Garcia
william david
Owen Vassarotto
Juan Omar Palma álvarez
Fidel Parabacuto
Luis Emilio Correa Díaz
Platzi
Alexandra Gabriela
Brayan Alexander Ñauñay Granizo
Ernesto Dario Cassino Crespo
Jose Luis Bedoya
Carlos Vera
Josué Merino
Por que usaremos un estado global Para que, cuando nuestro proyecto vaya aumentando su complejidad, no sé vuelva tedioso estar pasando la información que componetes, hermanos, hijos, padres, necesitan entré sí.
También, por que es mas facil debuggear errores teniendo una sola fuente de la verdad en cuanto almacenamiento para nuestra aplicación a la vez que lo hace mas legible y facil de mantener. :)
Con el context evitamos el "props drilling" ¿Que es? Cuando tenemos que pasar los datos que necesita cada componte por las propiedades,
Componete padre => hijo => nieto => bisnietos.
Con reactContext nos evitamos eso. y directamente llamamos dentro del componente al dato que necesitamos a travez del contexto.
Los tenemos por separados Componente padre {contexto = dato} Hijo {contexto = dato} nieto{contexto = dato} bisnieto {contexto = dato}
El prop drilling lo definimos como un paso del desarrollo que ocurre cuando necesitamos obtener datos que están en varias capas en el árbol de componentes React, es decir, necesitamos comunicar los componentes padres con sus componentes hijos. El contexto global nos permite evitar el envío de props entre todos estos componentes (prop drilling), teniendolos "centralizados" viviendo en un solo lugar y al cual podemos acceder desde cualquier parte de nuestra aplicación (todo lugar que se encuentre contenido en el wrapper)
En el curso de introducción a react varias cosas no me quedaron claras, varias cosas aparecían y solo se infería que se utilizaban. Como el provider y consumer.
Esas mismas cosas en este curso me quedan más claras, pero eso no implica que el curso de introducción a react no sea bueno, el curso de intro a react básicamente nos quita el miedo a afrontar el entorno y este muestra más claro varios conceptos.
Es como aprender inglés, duolinguo no te enseñara ingles, pero te quita el miedo a afrontar el idioma y hablar con nativos realmente te enseñara como se usa realmente el lenguaje.
Me encanta como estos nuevos cursos se complementan.
Usaremos un estado global ya que es más sencillo comunicar las propiedades y el estado por los componentes. Como la aplicación no es tan grande, Context es bastante útil en lugar de Redux o useReducer().
De igual manera, considero importante crear un Hook de useContext() para reutilizarlo a lo largo de la aplicación.
Hola compañeros, se que todos estaremos escribiendo lo mismo pero ahi les va por que usamos un contexto global en sencillas palabras.
Básicamente lo usamos para poder tener diferentes estados y usarlos en toda la aplicación, sin la necesidad de volverlos a crear cada vez que necesitemos un estado en particular en cada archivo [index.jsx[.
En resumen, es para no repetir código a lo que yo pude entender, y esto hará que nuestro código sea mas limpio y ordenado
Por si a alguien le interesa les muestro mi implementacion del contexto con typescript.
import { createContext, ReactNode } from "react"; type Props = { children: ReactNode } const ShoppingCartContext = createContext<Props | null>(null); export const ShoppingCartProvider: React.FC<Props> = ({children}: Props) => { return ( <ShoppingCartContext.Provider value={{ children }}> {children} </ShoppingCartContext.Provider> ) } export default ShoppingCartProvider;
como sabes como tiparlo, me complica mucho avanzar y atorarme en ponerle un type
Muchas gracias por compartir el codigo con typescript.. Me ayudas muchisimo.
Por fin una explicación sencilla y didáctica sobre el tema, gracias!
¿Cuál es la aplicación que se utiliza para hacer los dibujos?
Usamos un estado global porque es la manera más profesional, fácil y escalable de hacer que la información se converse en toda nuestra aplicación.
Para evitar el prop drilling
En proyectos de React, suelo preferir el uso de un estado global, especialmente cuando la aplicación se vuelve más compleja y necesita una gestión centralizada del estado. Al usar un estado global, evitamos la necesidad de pasar datos entre múltiples componentes mediante props, simplificando el código y mejorando la escalabilidad. Además, herramientas como Redux facilitan el manejo de estados asíncronos y aportan estructura al desarrollo, especialmente en proyectos más grandes. En resumen, para situaciones más complejas, me inclino hacia el estado global.
El principal motivo para utilizar React Context para compartir datos globalmente es mantener un estado compartido accesible a lo largo de varios componentes en una aplicación de React, sin necesidad de pasar explícitamente props a través de múltiples niveles de la jerarquía de componentes.
Como se soluciona esto?, la aplicación está leyendo 2 veces la data pero la renderiza la segunda vez, a alguien más le pasa???
Esto es por el strict mode
Te dejo la docu de React
Estoy siguiendo el paso a paso y me da error en la linea 5 export const ShoppingCartProvider = ({children}= =>{ //aqui me sale el siguiente error : 'children' is missing in props validationeslintreact/prop-types ... }
A qué se debe y como lo corrijo
El error se debe a que falta la validación de propTypes para la propiedad 'children'. Puedes corregirlo agregando 'import PropTypes from 'prop-types';' al inicio del archivo y luego añadiendo 'children: PropTypes.node.isRequired' en la validación de propTypes.
Asi lo resolvi:
import { createContext } from "react"; import PropTypes from "prop-types"; const ShoppingCartContext = createContext(); export const ShoppingCartProvider = ({children})=> { return( <ShoppingCartContext.Provider> {children} </ShoppingCartContext.Provider> ); }; ShoppingCartProvider.propTypes = { children: PropTypes.node.isRequired, };
Alguien sabe por qué cuando recargo la página me sale un error como si no se hubiese consumido la API, tengo que llamar primero al array y después ya me funciona el codigo.
El Estado Global de nuestra aplicacion generado por ++createContext++ de React, nos permite acceder a todos los datos que necesita un componente, independiente de todo el resto. Esto nos permite manejar de manera individual las props que recibe cada componente y asi hacer mas facil la correccion de errores ya que tenemos toda la informacion de la aplicacion reunida en el Context.
para utilizar los valores de los estados en distintos componentes!
Usamos un estado global para que así distintas partes de la aplicación tengan la capacidad de interactuar con la data que viene de la API, para hacer un filter, ejemplo de Electronics, se accede al estado global, se filtran desde allí y se obtiene, para no estar realizando constantes fetchs en los distintos labels de los productos
Eso es lo que pienso :)
Tengo una pregunta, entonces ¿cuál sería la diferencia entre usar Redux y el contexto global de React?