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

:/ nao entendi nada dessa funcao reduce

alguem poderia me explicar melhor nao entendi todos esses paretros e somas

1 resposta
solução!

Oi Laurie, como vai?

Nessa aula, o objetivo do trecho de código é calcular a quantidade total de itens no carrinho e o valor total do carrinho, sempre que o carrinho for atualizado.

Vamos entender passo a passo:

useEffect(() => { ... }, [carrinho]);

Esse useEffect é um hook do React que executa uma função sempre que o valor da dependência carrinho mudar, ou seja, sempre que o carrinho for atualizado, esse efeito será executado.

const { totalTemp, quantidadeTemp } = carrinho.reduce((acumulador, produto) => { ... }, { quantidadeTemp: 0, totalTemp: 0 });

No código acima estamos, de fato, calculando a quantidade total e do valor total. O método reduce é usado para percorrer todos os itens do carrinho e transformá-los em um único objeto com as propriedades quantidadeTemp e totalTemp. A função passada como primeiro argumento do reduce é chamada de "função redutora". Ela recebe dois parâmetros:

  • acumulador: é um objeto que vai sendo atualizado a cada iteração, contendo a quantidade e o valor total temporários.
  • produto: é cada um dos itens do carrinho.

Dentro da função redutora, calculamos a quantidadeTemp somando a quantidade do produto atual ao valor acumulado no acumulador.quantidadeTemp.

Também calculamos o totalTemp somando o valor do produto atual (preço * quantidade) ao valor acumulado no acumulador.totalTemp.

O valor inicial passado como segundo argumento do reduce é um objeto com quantidadeTemp e totalTemp iguais a 0.

setQuantidade(quantidadeTemp); e setValorTotal(totalTemp);

No código acima, após os cálculos, atualizamos os estados quantidade e valorTotal com os valores temporários calculados.

Então, em resumo, esse código usa o useEffect para recalcular a quantidade total e o valor total do carrinho sempre que ele for atualizado, e atualiza os estados correspondentes para que os componentes que utilizam esses valores sejam renderizados corretamente.

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!