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

73
Vistas
React setState se está actualizando incorrectamente
const [cartItems, setcartItems] = useState([] as Product[]); const addItemToCart = (product: Product) => { setcartItems((preCartItems) => { const updatedcart = [...preCartItems]; if(!updatedcart.length) updatedcart.push(product) // updatedcart[0].price original value 1 updatedcart[0].price = updatedcart[0].price + 1 ; console.log(updatedcart[0].price); // prints 2 console.log(updatedcart); // printed object is saying price value 3 return updatedcart; }); };

No puedo entender cómo el valor se incrementa automáticamente en 1 y por qué el valor en el objeto da una salida diferente en comparación con el valor al que accede el operador de punto

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema es que estás mutando tu estado dentro de setcartItems .

Haciendo const updatedcart = [...preCartItems]; no está copiando los objetos en preCartItems , solo está distribuyendo la referencia de los mismos objetos en una nueva matriz.

Entonces estás mutando el objeto aquí updatedcart[0].price = updatedcart[0].price + 1 ; .

Esto conducirá a dos versiones diferentes del estado, de ahí el resultado inconsistente.

Si desea copiar los objetos que debe hacer

 const updatedcart = preCartItems.map(item => ({ ...item }));

Esto devuelve una nueva matriz de nuevos objetos y puede realizar cualquier operación que desee con ellos. Esta forma de copiar una matriz de objetos también es superficial, solo funciona para 1 nivel de profundidad, si desea copiar también objetos anidados, necesita una función más robusta.

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