alguem poderia me explicar melhor nao entendi todos esses paretros e somas
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
alguem poderia me explicar melhor nao entendi todos esses paretros e somas
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:
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!