Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

101
Visualizações
Aumente la cantidad de un objeto en una matriz Javascript, React, RecoilJs

al verificarlo en la consola, el resultado está bien, pero si reemplaza esa matriz en setCart, no está sucediendo, RecoilJS

 const cartState=[ { id:1, productName:'Apple',price:100,quantity:1} { id:2, productName:'Cherry',price:70,quantity:1} { id:3, productName:'Orange',price:60,quantity:1} { id:4, productName:'Grapes',price:69,quantity:1} ] const [cart, setCart] = useRecoilState(cartState)

el objeto es {id:4, productName:'Grapes',price:69,quantity:1}

 const addToCart =(object) => { if(!cart.includes(object)) { setCart([...cart, object]) }else { let f= cart.map(items=> { if(items.id==object.id) { return {...items, quantity:items.quantity+ 1} } return items }) setCart(f) } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Tema

Array.prototype.includes básicamente utiliza una igualdad de referencia superficial. Los tipos primitivos y de cadena siempre son iguales a sí mismos por valor, pero los objetos deben hacer referencia a la misma referencia exacta en la memoria para que .includes funcione para ellos. Sin embargo, este casi nunca es el caso en React cuando el nuevo elemento que se agrega al carrito también suele ser un nuevo objeto.

Siempre es más seguro emparejar objetos por propiedades específicas.

Solución

Busque y combine por los identificadores de artículos del carrito. Si algún artículo en el carrito tiene una propiedad de id coincidente, actualice el carrito; de lo contrario, agregue el nuevo artículo a la matriz del carrito.

Sugiero usar también actualizaciones de estado funcional para actualizar correctamente desde el estado anterior, no cualquier estado de carrito cerrado en ningún ámbito. A veces, estas pueden ser referencias obsoletas, especialmente si se llama a addToCart en cualquier bucle para agregar varios elementos.

 const addToCart = (newItem) => { if (cart.some(item => item.id === newItem.id)) { setCart(cart => cart.map(item => item.id === newItem.id ? { ...item, quantity: item.quantity + 1 } : item, )); } else { setCart(cart => [...cart, newItem]); } }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda