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

184
Vistas
¿Hay una forma más corta de actualizar una tienda esbelta?

Tengo una tienda esbelta que usa estos datos:

 { "books": [
 {
 "id": "F0tE_25",
 "title": "Abc",
 ...
 },
 "id": "zNPAQit",
 "title": "Ny, Ny",
 ...
 }
 ]
}

Edito un libro en un formulario y llamo a la función a continuación para actualizar la tienda (id es la identificación del libro para actualizar y bookData es la información actualizada (del formulario):

 updateBook: (id, bookData) => {
 bookstore.update(items => {
 const index = items.findIndex(i => i.id ===id)
 const updatedBook = {...items[index], ...bookData}
 const updatedBooks = [...items]
 updatedBooks[index] = updatedBook
 return updatedBooks
})
}

Funciona. Simplemente parece un montón de malabares para realizar una actualización. ¿Se preguntaba si había una mejor manera?

almost 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Hay algunos problemas asociados con el enfoque en la pregunta, a saber, el uso de findIndex . Si el elemento con la identificación dada no existe, el valor del index será -1 , lo que hará que los items[index] no estén undefined y serán la causa de otro comportamiento no deseado.

Puede usar .map() para eliminar y simplificar la actualización. Aquí hay un ejemplo.

 updateBook: (id, bookData) => {
 bookstore.update(items =>
 items.map(item => {
 if (item.id === id) {
 return { ...item, ...bookData };
 }
 return item;
 })
 );
}

Editado: la respuesta de @ pilchard podría ser una implementación aún más clara con el uso del operador ternario.

 updateBook: (id, bookData) => {
 bookstore.update(items =>
 items.map(item => {
 return item.id === id ? { ...item, ...bookData } : item;
 })
 );
}

Espero que ayude.

almost 4 years ago · Santiago Trujillo 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