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

160
Vistas
Número de incremento incorrecto del reductor de reacción

Tengo un problema cuando envío una acción que activa mi tipo ADD_TO_CART. Quiero aumentar la cantidad de un número específico agregado en el carrito cuando el usuario hace clic en él. Los números que obtengo para la cantidad son: 1, 3, 5, 7, 9... Pero deben incrementarse solo en 1 como 1, 2, 3, 4, 5. ¿Por qué obtengo incrementos dobles en mi instrucción if? cuando quiero actualizar el estado indirectamente sin mutarlo? Cualquier tipo de ayuda es muy apreciada.

Aquí está mi código:

 switch(action.type){ case 'ADD_TO_CART': let tempCart = [...state.cart]; let specificIndex = state.cart.findIndex((obj) => obj.id === action.item.id); if(specificIndex >= 0){ tempCart[specificIndex].quantity +=1; // it should increment only by 1 and not by 2 tempCart[specificIndex].price += action.item.price; return{ ...state, cart : tempCart, } }

Y aquí está mi estado para el ejemplo anterior:

 export const initialState = { cart: [], };
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Sospecho que esto se debe a que está tratando a tempCart como mutable (agregando a sus miembros directamente), cuando en realidad es solo una referencia ( no una copia de) parte del state , que siempre debe tratarse como inmutable . En su lugar, intente algo como lo siguiente:

 switch (action.type) { case "ADD_TO_CART": let specificIndex = state.cart.findIndex( (obj) => obj.id === action.item.id ); if (specificIndex >= 0) { return { ...state, cart: state.cart.map((item, idx) => idx == specificIndex ? { ...item, quantity: item.quantity + 1, price: item.price + action.item.price, } : item ), }; } }

Consulte Patrones de actualización inmutables para obtener más información. Tenga en cuenta que, incluso en este pequeño ejemplo, este tipo de actualizaciones pueden volverse difíciles de manejar rápidamente. Hay bibliotecas de ayuda disponibles que pueden simplificar el proceso, si así lo desea.

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