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

State no método construtor

Olá,

eu havia feito o curso anterior de React e se não me engano o instrutor orientava a criar as variáveis que seriam usadas no state dentro do método construtor da classe (também tinha outra questão relacionada ao "bind" e o "this" do React que era feita dentro do construtor). Esta abordagem não é mais realizada desta forma ou ainda é válida?

3 respostas
solução!

Fala Jeison, tudo bem?

Durante o curso, optei por utilizar uma versão mais atual do JavaScript e por isso, alguns pontos se tornam desnecessários quando relacionados ao curso anterior. Você pode ir mais a fundo assistindo aos cursos de javascript avançado aqui mesmo na Alura.

Sua primeira dúvida é em relação a inicialização do state fora do constructor, embora isso pareça um antipattern, com a versão atual do JS, conseguimos criar o que chamamos de class fields (propriedades). Utilizando dessa forma, não é necessária a utilização de um construtor, deixando seu componente mais conciso (classe sem construtor, não precisamos do this para acessar o state).

Sua segunda dúvida é sobre o bind utilizado no curso anterior. A diferença é a utilização das Arrow Functions e seu comportamento, que é diferente das Functions utilizadas anteriormente. Nas functions, o this terá valores diferentes baseado no local onde essa função foi chamada (por isso era necessário o bind), enquando nas arrow functions isso não acontece, o this sempre terá o valor baseado no local de declaração, ou seja, escopo léxico, o que torna o bind no constructor um passo desnecessário.

Repare, todas as atualizações do React, até o momento, são retrocompativeis, inclusive relacionado à mudanças de versão do JS. Ou seja, a forma anterior ainda é válida e funciona normalmente, mas muito dificilmente você verá novos projetos com essa abordagem.

Se algo não ficou claro, basta perguntar novamente!

Espero que esteja gostando!

Abraços e sucesso!

Obrigado pelo esclarecimento, bem completa sua resposta =)

Abraço

Obrigado Jeison!

Como sua dúvida foi solucionada, estou fechando o tópico, caso você tenha alguma nova dúvida é só criar um novo tópico.

Abraços!