Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
¿Cómo paso todas estas funciones usando solo un contexto?

Tengo todo este contexto creado, pero ahora quiero optimizarlo. ¿Cómo paso todas las funciones creadas usando solo un proveedor de contexto? Tengo tres funciones para manejar las opciones del carrito.

  1. handleAddProduct
  2. manejarQuitarProducto
  3. AsaCarroLiquidación

Creé un contexto para cada función, pero ahora quiero que todas las funciones se incluyan en un solo proveedor de contexto.

y también necesito algunas optimizaciones para mis tres funciones porque están tardando mucho en realizar la acción.

 import './App.css'; import data from './component/back/Data/data' import Header from './component/front/Header/Header'; import { BrowserRouter as Router } from 'react-router-dom' import Routiis from './component/front/Routiis/Routiis' import { createContext, useState } from 'react'; const AddProduct = createContext(); const RemoveProduct = createContext(); const EmptyCart = createContext(); const App = () => { const { productItems } = data; const [cartItems, setCartItems] = useState([]); // function for adding the product............................................................................................... const handleAddProduct = (product) => { const ProductExist = cartItems.find((item) => item.id === product.id) if (ProductExist) { setCartItems (cartItems.map((item) => item.id === product.id ? { ...ProductExist, quantity: ProductExist.quantity + 1 } : item)) } else { setCartItems([...cartItems, { ...product, quantity: 1 }]) } } // function for removing the product.............................................................................................. const handleRemoveProduct = (product) => { const ProductExist = cartItems.find((item) => item.id === product.id) if (ProductExist.quantity === 1) { setCartItems(cartItems.filter((item) => item.id !== product.id)) } else { setCartItems( cartItems.map((item) => item.id === product.id ? { ...ProductExist, quantity: ProductExist.quantity - 1 } : item,) ) } } // function for clearing the cart................................................................................................... const handleCartClearance = () => { setCartItems([]); } return ( <> <div className='site-bg'> <AddProduct.Provider value={handleAddProduct}> <RemoveProduct.Provider value={handleRemoveProduct}> <EmptyCart.Provider value={handleCartClearance}> <Router> <Header cartItems={cartItems} /> <Routiis productItems={productItems} cartItems={cartItems} /> </Router> </EmptyCart.Provider> </RemoveProduct.Provider> </AddProduct.Provider> </div> </> ); } export default App; export { AddProduct, RemoveProduct, EmptyCart }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El componente del proveedor acepta que se pase una propiedad de valor a los componentes de consumo que son descendientes de este proveedor. podría proporcionarle un objeto que lleve las propiedades de las funciones. y por lo tanto solo necesita consumir el Product

esto responde a tu pregunta

 <> <div className="site-bg"> <Product.Provider value={{ handleAddProduct: handleAddProduct, handleRemoveProduct: handleRemoveProduct, handleCartClearance: handleCartClearance, }} > <Router> <Header cartItems={cartItems} /> <Routiis productItems={productItems} cartItems={cartItems} /> </Router> </Product.Provider> </div> </>

Eche un vistazo rápido a los documentos oficiales de contexto de React, podría ser útil.

about 4 years ago · Juan Pablo Isaza Denunciar

0

En realidad es muy fácil. en lugar de pasar un parámetro como valor, páselo como objeto como se muestra a continuación

 <AddProduct.Provider value={{handleAddProduct:handleAddProduct,handleRemoveProduct:handleRemoveProduct}}> </AddProduct.Provider>

como este y en su código donde desea usar estas funciones, simplemente haga lo siguiente

 const { handleRemoveProduct,handleAddProduct } = useContext(AddProduct);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda