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

152
Vistas
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 Respuestas
Responde la pregunta

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 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