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

200
Vistas
Reaccionar ganchos: actualizar el elemento en la lista después de editar

Soy nuevo en React Hooks. Estoy tratando de hacer una pequeña aplicación crud, con agregar, editar, eliminar. Tengo algunos problemas para que mi función de edición funcione. Cuando hago clic en editar, la entrada agregará los valores del elemento en el que se hace clic. Pero, ¿cómo actualizo el artículo?

 const [items, setItems] = useState<any>([]); const [comment, setComment] = useState(""); const [amount, setAmount] = useState(""); const handleAddSubmit = (e: any) => { e.preventDefault(); const newItem = { id: new Date().getTime(), comment: comment, amount: amount, preview: preview } setItems([...items].concat(newItem)); setFile(null); setComment(""); setAmount(""); }; const editItem = (item: any) => { setFile(undefined); setComment(item.comment); setAmount(item.amount); }; const deleteItem = (id: any) => { const updatedItems = [...items].filter((item) => item.id !== id); setItems(updatedItems); } return ( <div> {items.map((item: any, index: any) => { return ( <div key={item.id}> <div>{item.comment}</div> <div>{item.amount} $</div> <div onClick={() => editItem(item)}>Edit</div> <div onClick={(e) => deleteItem(item.id)}>Delete</div> </div> ); })} <input value={comment} onChange={(e) => setComment(e.target.value)} placeholder="Comment" /> <input value={amount} onChange={(e) => setAmount(e.target.value)} type="number" /> <button formAction="submit">Add</button> </div>

)

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

0

Puede usar un mapa para recorrer cada elemento de una lista y crear un nuevo objeto para el elemento que desea actualizar:

 const editItem = (item) => { setItems(items.map(i => i.id === item.id ? {...i, comment, amount} : i); setComment(""); setAmount(""); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Parece que se olvidó de agregar un controlador onclick al botón:

 <button formAction="submit" onClick={handleAddSubmit}>Submit</Button>
about 4 years ago · Juan Pablo Isaza Denunciar

0

Entonces, según su código, cuando hace clic en el botón Editar, esta función se activa

 const editItem = (item: any) => { setFile(undefined); setComment(item.comment); setAmount(item.amount); };

Ahora esta función está actualizando el estado y dentro de las etiquetas de entrada está utilizando el estado como valores, por lo que esta es la razón por la que está obteniendo los resultados que está obteniendo.

Ahora puedes cambiar tu código a

 const editItem = (item) => { setItems(items.map(i => i.id === item.id ? {...i, comment, amount} : i); setComment(""); setAmount(""); };
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