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

Constante que muda?

Este conteúdo desta aula está um pouco confuso, idas e vindas, faz e refaz, precisei assistir alguns trechos da aula 3 vezes para entender, mesmo assim, não entendi poque na aula foi utilizado uma constante, sendo que precisou mudar o valor dela logo na linha de baixo:

    const novoEstado = {...erros};
    novoEstado[name] = validacoes[name](value);
1 resposta
solução!

Olá, Abner! Tudo bem?

Quando passamos um objeto, ou uma array, para uma variável ou uma constante, o valor que é guardado é um endereço de memória em que está salvo o objeto (ou a primeira posição da array).

Isso acontece porque objetos e arrays não podem ser salvos em apenas uma unidade de memória, pois possuem valores diferentes (no caso de objetos, várias propriedades, e no caso de arrays, várias posições).

Apesar disso, o JavaScript faz o tratamento para que nós não precisemos nos preocupar com isso, então trabalhamos, na maioria das vezes, sem essa noção.

Certo, agora vamos olhar melhor o trecho de código que você forneceu:

const novoEstado = {...erros};

Acima, estamos atribuindo um novo objeto à variável novoEstado, e como eu disse, essa variável irá guardar um valor diferente do objeto com o qual trabalhamos, esse valor é uma referência ao objeto, uma instrução para seu computador saber onde encontrá-lo.

Quando alteramos o valor de novoEstado[name], o valor de novoEstado não muda. Uma das suas propriedades tem seu valor alterado, sim, mas o endereço de memória que serve de referência ao objeto ainda é o mesmo, e por isso, é constante.

De toda forma, o código funcionaria normalmente se novoEstado fosse declarado usando let, por exemplo. Mas a escolha foi usar const. O motivo é a boa prática, que ajuda muito a manter o desenvolvimento de uma aplicacação sobre controle, principalmente quando os valores são usados em vários momentos.

Usar const é boa prática pois nos ajuda a "rastrear" mudanças, e incentiva a imutabilidade (um conceito muito importante do React). Por isso, sempre é dada preferência à const, mesmo que não vá fazer muita diferença. Apenas usa-se let quando realmente for necessário, pois é preciso fazer uma alteração de forma que const tornaria impossível.

Beleza?

Qualquer coisa, estamos aqui no fórum! Bons estudos!