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

207
Views
¿Por qué cuando hago clic en el botón que contiene la función Arriba, el número item.newStock siempre está uno detrás? (Reaccionar)

Estoy haciendo un pequeño sitio de comercio electrónico y actualmente estoy trabajando en un carrito de compras. la idea es que cada vez que presione el botón que contiene la función Arriba, la matriz debe cambiar y luego imprimirse en la pantalla a través de item.newStock. Sin embargo, la primera vez que presiono el botón no hace nada y la segunda vez agrega uno. Pero cuando hago console.log, el número es uno más alto que lo que se imprime a través de item.newStock.

¿Alguna idea de por qué está sucediendo eso?

 const Table = () => { return ( <div class="container"> <table class="table m-4"> <thead> <tr> <th scope="col">Cake</th> <th scope="col">QTY</th> <th scope="col">Price</th> </tr> </thead> <tbody> {array.map((item) => { if (item.newStock > 0) { return ( <> <tr> <th scope="row">{item.title}</th> <td>{item.newStock}</td> <td>${item.price}</td> <div class="changeQTY"> <h5>QTY</h5> <button class="up" onClick={Up}> + </button> <button class="down"> <span class="minus">-</span> </button> <button>Delete</button> </div> </tr> </> ); } })} </tbody> </table> <button>Confirm Purchase</button> </div> ); };
 function Up() { setBuyQTY(parseInt(buyQTY) + 1); setArray((state) => state.map((x) => x.id === id ? { ...x, newStock: parseInt(buyQTY), } : x, ), ); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Porque setState es asíncrono y buyQTY no se habrá actualizado cuando llegue a ese setArray .

Honestamente, no veo el punto en buyQTY si cada producto debe tener su propia cantidad, así que simplemente deshágase de él y haga

 setArray((state) => state.map((x) => x.id === id ? { ...x, newStock: x.newStock + 1, } : x, ), );
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!