Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Ao invés de utilizar o operador Spread, poderiamos utilizar o método push() no função adicionar categoria?

poderiamos utilizar o método push() no função adicionar categoria?

2 respostas
solução!

Olá, Vitor, tudo bem?

Poderíamos utilizar o push(), mas teria que ser no novoArrayCategorias criado dentro da função, assim:

  adicionarCategoria(nomeCategoria) {
    const novoArrayCategorias = [...this.state.categorias];
    novoArrayCategorias.push(nomeCategoria);

    const novoEstado = { ...this.state, categorias: novoArrayCategorias };
    this.setState(novoEstado);
  }

O código é equivalente ao da aula e poderíamos dizer que a forma que o instrutor fez é um pouco mais direta. Mas se você perguntava se poderíamos utilizar o push() diretamente em this.state.categorias, não podemos fazer isso, pois só podemos alterar alguma propriedade do state utilizando setState(). Na verdade, se você alterar o state diretamente, o state é até alterado, mas a atualização não é refletida na interface.

E note que no código acima, ainda mantive o uso do spread operator por ser uma forma prática de copiar um array. Mas note que independentemente do método que utilizemos para copiar this.state.categorias, só podemos dar push() na cópia do array.

Espero ter ajudado! Bons estudos :)

Vitor, estou fechando o tópico devido ao tempo da postagem. Se sua dúvida persistir, pedimos que abra outro tópico!