2
respostas

Dúvida com setState

Durante a aula o instrutor precisa setar o novo estado das categorias e faz algo assim:

  novasCategorias(categorias) {
        this.setState({...this.state, categorias});
    }

No entanto, vendo o código imaginei que poderia ser feita da seguinte forma:

   novasCategorias(categorias) {
        this.setState({categorias: categorias});
    }

Testando aqui, aparentemente funcionou corretamente essa segunda estratégia. O erro poderia vir caso houvesse mais um estado, então adicionei ao state objeto com nome e realizando teste, essa abordagem não sobrescreveu nenhuma outra propriedade dentro do meu state. Dai fiquei com dúvida em qual seria o erro de utilizar assim. Achei o uso do spread operator mais verboso. Poderiam me apontar motivos para preferir usar a primeira opção ?

2 respostas

Eae Jair, tudo joia?

A diferença entre a sua ideia e a da qual foi passada é que a sua solução tem como objetivo pescar apenas uma informação já com o uso da reticências a ideia é puxar todos os parâmetros que ele já pussui de uma vez só.

Acho que o melhor motivo para usar o método apresentado é a otimização do serviço.

Complementando de forma resumida o que @juniorxxx escreveu, se não utilizar as reticencias ao atualizar o estado você vai perder as categorias que estavam no estado ou seja com as reticencias a atualização de estado ocorre da seguinte maneira:

todas as categorias salvas antes adicionando a atual ao fim do array

sem as reticencias:

todas as categorias salvas antes serão removidas ,  adicionando a(s) atual categoria(s) ao array