Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

99
Views
Aumente la cantidad de un objeto en una matriz Javascript, React, RecoilJs

al verificarlo en la consola, el resultado está bien, pero si reemplaza esa matriz en setCart, no está sucediendo, RecoilJS

 const cartState=[ { id:1, productName:'Apple',price:100,quantity:1} { id:2, productName:'Cherry',price:70,quantity:1} { id:3, productName:'Orange',price:60,quantity:1} { id:4, productName:'Grapes',price:69,quantity:1} ] const [cart, setCart] = useRecoilState(cartState)

el objeto es {id:4, productName:'Grapes',price:69,quantity:1}

 const addToCart =(object) => { if(!cart.includes(object)) { setCart([...cart, object]) }else { let f= cart.map(items=> { if(items.id==object.id) { return {...items, quantity:items.quantity+ 1} } return items }) setCart(f) } }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Tema

Array.prototype.includes básicamente utiliza una igualdad de referencia superficial. Los tipos primitivos y de cadena siempre son iguales a sí mismos por valor, pero los objetos deben hacer referencia a la misma referencia exacta en la memoria para que .includes funcione para ellos. Sin embargo, este casi nunca es el caso en React cuando el nuevo elemento que se agrega al carrito también suele ser un nuevo objeto.

Siempre es más seguro emparejar objetos por propiedades específicas.

Solución

Busque y combine por los identificadores de artículos del carrito. Si algún artículo en el carrito tiene una propiedad de id coincidente, actualice el carrito; de lo contrario, agregue el nuevo artículo a la matriz del carrito.

Sugiero usar también actualizaciones de estado funcional para actualizar correctamente desde el estado anterior, no cualquier estado de carrito cerrado en ningún ámbito. A veces, estas pueden ser referencias obsoletas, especialmente si se llama a addToCart en cualquier bucle para agregar varios elementos.

 const addToCart = (newItem) => { if (cart.some(item => item.id === newItem.id)) { setCart(cart => cart.map(item => item.id === newItem.id ? { ...item, quantity: item.quantity + 1 } : item, )); } else { setCart(cart => [...cart, newItem]); } }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!