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

148
Views
El truco universal React TS para entradas con useState no funciona como se esperaba

He visto una solución mecanografiada con función de cambio de controlador universal, pero en mi caso funciona mal. Necesito ayuda para entender por qué sucede esto.

Cuando agrego un nuevo producto, se agrega correctamente, pero cuando trato de borrar la entrada manualmente, primero se vuelve a procesar, también cambia el contenido ya agregado.

Algoritmo para ver este error: complete las entradas, agregue el envío y elimine una letra de la entrada del título; verá que afecta el título ya agregado en otro estado, pero solo en la primera representación

Caja de arena: https://codesandbox.io/s/restless-dream-do7bqh?file=/src/App.tsx

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El siguiente código de ejemplo puede ser una solución para lograr el objetivo deseado:

En el método handleChange :

 setProduct(prev => ({ ...prev, [name]: value }));

Explicación

  • El valor prev del product se toma tal cual
  • Luego, usando el operador de propagación ... todos los accesorios de prev se distribuyen
  • A esto ahora le sigue [name] que es un nuevo accesorio que se agrega con value como el valor correspondiente
  • Cualquier accesorio existente será reemplazado.

Supongamos que la variable de name tiene el valor 'title' y el value es 'Testing 123' , entonces el objeto del product se convierte en:

 product = { id: previousValueOfId, price: previousValueOfPrice, title: 'Testing 123' }

Aquí, se supone que previousValueOfId y previousValueOfPrice son los valores.

Por qué el código de OP no obtuvo el resultado deseado

El código es:

 setProduct((prev) => { (prev as any)[name] = value; const newValue = { ...prev }; return newValue; });
  • Esto toma el producto prev y cambia su [name] prop.
  • Cuando se cambia prev , puede afectar a los elementos de la interfaz de usuario que se representan mediante product .

(NOTA: Todavía soy muy nuevo en ReactJS y si esto es incorrecto, por favor actualice adecuadamente).

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!