Construyendo el Carrito de Compras: useContext

Clase 28 de 33Curso de Desarrollo de Aplicaciones Web con Gatsby JS

Resumen

React Context nos ayuda a crear un estado global, una forma de compartir el estado de nuestra aplicación entre todos los componentes, sin importar en qué lugar se encuentren y sin necesidad de pasar y pasar props.

Además, useContext nos permite usar todas las características de React.Context con la sintaxis de los hooks. En este caso, vamos a usar todas estas herramientas para construir nuestro carrito de compras.

  1. Crear el contexto:
// context.js import React, { createContext, useState } from 'react'; export const CartContext = createContext(); export const CartProvider = ({ children }) => { const [cart, setCart] = useState([]); const addToCart = element => { setCart([ ...cart, element ]); } return ( <CartContext.Provider value={{ cart, addToCart }}> {children} </CartContext.Provider> ); }
  1. Encerrar toda nuestra aplicación (o las partes donde queremos compartir el estado) en el componente <Provider>:
// gatsby-browser.js exports.wrapRootElement = ({ element }) => ( <CartProvider> <GlobalStyles /> <GlobalStyles>{element}</GlobalStyles> </CartProvider> );
  1. Consumir el Contexto desde cualquier componente:
const { cart } = useContext(CartContext);