Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Validação de produtos no carrinho

const adicionarProduto = (novoProduto) =>  {
    const temOProduto = carrinho.some(itemDoCarrinho => itemDoCarrinho.id === novoProduto.id)
    if(!temOProduto) {
      novoProduto.quantidade = 1;
      return setCarrinho(carrinhoAnterior => 
        [...carrinhoAnterior, novoProduto])
    }

    setCarrinho(carrinhoAnterior => carrinhoAnterior.map(itemDoCarrinho => {
      if(itemDoCarrinho.id === novoProduto.id) itemDoCarrinho.quantidade += 1;
      return itemDoCarrinho
    }))
  }

Se já temos a validação na variável temOProduto, porque fazemos novamente a validação if(itemDoCarrinho.id === novoProduto.id) itemDoCarrinho.quantidade += 1; ao final? Não é uma repetição desnecessária de código?

1 resposta
solução!

Oi Mauricio, tudo bem?

A validação if(itemDoCarrinho.id === novoProduto.id) ao final do código não é uma repetição desnecessária de código. Na verdade, ela é necessária para verificar se o produto já existe no carrinho antes de incrementar a quantidade.

A primeira validação const temOProduto = carrinho.some(itemDoCarrinho => itemDoCarrinho.id === novoProduto.id) verifica se o produto já está no carrinho. Se não estiver, o código entra no if(!temOProduto) e adiciona o novo produto ao carrinho com a quantidade inicial de 1.

No entanto, se o produto já estiver no carrinho, o código entra no else e percorre o carrinho com o map. Nesse momento, a validação if(itemDoCarrinho.id === novoProduto.id) é necessária para encontrar o produto correspondente no carrinho e incrementar a quantidade em 1.

Portanto, essa validação não é uma repetição desnecessária de código, mas sim uma verificação importante para garantir que a quantidade correta seja atualizada no carrinho.

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software