Aula 02
Curso React: Componentes Controlados
Summary
# Resumo da Transcrição
## Introdução ao Componente Controlado em React
1. **Definição Inicial**:
- Começa com a definição de um valor fixo em um input, que não pode ser alterado.
2. **Importância do Estado**:
- Para criar um componente controlado, o valor do input deve ser ligado ao estado do componente.
- A variável de estado é renomeada de `valor` para `nome`.
3. **Inicialização do Estado**:
- O estado inicial é definido diretamente, ao invés de usar o `constructor`.
4. **Função onChange**:
- Um evento `onChange` é adicionado ao input para monitorar mudanças.
- A função `onNomeChange` é criada para lidar com o evento e logar as mudanças no console.
5. **Manipulação do Evento**:
- O `event.target` é usado para acessar o elemento que acionou o evento, coletando seu valor.
6. **Atualizando o Estado**:
- Para que o input reflita as mudanças, o estado precisa ser atualizado com `this.setState()`.
- É fundamental usar `setState` para garantir que a interface reaja adequadamente às mudanças no estado.
- O erro relacionado ao `setState` não estar definido ocorre porque não foi feito o `bind` adequado na função.
## Conclusão
- O objetivo é garantir que a mudança no estado do componente leve à atualização do valor exibido no input, permitindo que a interface reaja de maneira correta às entradas do usuário.
Video Transcript
Então o que a gente vai fazer é ao input vamos dar um valor.
Primeiro dá um valor, pode ser em branco primeiro e também a gente tem que definir um onChange.
Tá bom?
Mas antes de fazer isso, só demonstrar o que acontece se a gente dá um valor a isso.
Se botar valor a alguém, vou salvar o que acontece.
Vai aparecer o valor a alguém aqui, mas dá para pagar?
Não dá para pagar, nem dá para digitar nada.
Aqui o valor é fixo, tá bom?
E toda vez que eu mudar o valor, o React vai pegar o valor aqui, como o valor é fixo,
vai sempre ser alguém.
A maneira que a gente vai fazer o componente controlado, a gente tem que definir o valor
com a variável do estado, do React.
Tá bom?
Então em vez de ser valor fixo, a gente tem que olhar no estado.
O valor, vamos mudar o nome da variável para ser nome.
E como é que a gente vai inicializar esse estado?
Tem várias maneiras, pode ser no constructor, constructor, mas também pode ser assim diretamente
só dando o state.
Segui uma das maneiras mais novas de definir o estado.
Então vou definir o estado aqui inicial, nome para ser alguém, salvar, senorte que
tem alguém aqui, ainda não dá para digitar, que é um valor fixo, mas eu estou acessando
o valor do estado.
E é isso que a gente quer para o primeiro passo para fazer o componente controlado.
O valor tem que ser do estado do componente.
Aqui eu tenho o componente app, eu estou definindo o estado inicial assim e a variável nome,
que é o valor inicial.
Tá bom?
Agora não dá para digitar nada, o valor aqui está fixo.
Para isso a gente precisa da chamada função onChange.
Tá bom?
Esse evento onChange acontece toda vez que você digitar uma coisa nova na caixa de texto
ou se apagar alguma coisa.
Então a gente vai definir a função onChange, vamos chamar o nome change, eu vou deixar
em inglês para seguir esse standard, normalmente gosto de nomear minhas funções onChange
com o nome da variável dentro da palavra onChange.
Por exemplo, se fosse idade eu ia falar onIdadeChange e assim por diante.
Normalmente program em inglês e não sei se você tem um padrão em português, mas
se tiver, por favor use.
Então vou botar onNomChange, tá bom?
E vou definir a função do componente, então ponto V, ponto onNomChange.
Tá bom?
Então vamos definir aqui, deixa eu botar um soft wrap para você ver na outra linha.
Então eu vou definir a função antes do render, chamada onNomChange, tá bom?
Vai ser uma função assim e essa função tem um argumento chamado event, tá bom?
Que é o evento que aconteceu.
O que eu vou fazer?
Vou dar um console log do evento só para você ver o que é.
Então quando eu mudar o valor da caixa de texto, vai chamar a função thisOnNomChange,
que é essa aqui, que tem o evento como parâmetro e vamos dar o console log para ver o que é
esse evento, esse objeto.
Voltando ao navegador, deixa eu clicar processar.
Ah, desculpe, deixa eu mudar a caixa de texto.
Eu dei um backspace ali, você nota que apareceu o console log.
Esse objeto tem um proxy, se eu dar um alunado tem um handler e não sei o que, várias coisas.
Get, não sei o que, isRevoked.
Tem várias coisas dentro informando você o que é que os detalhes desse evento que aconteceu.
Mas a coisa que a gente se importa mais é o event.target, tá bom?
Event.target se refere ao aquele que acionou o evento.
Nesse caso foi essa input.
Vou dar um console log só para ver o que acontece.
Vou aqui digitar alguma coisa.
O sinote que deu um console log do input.
O event.target é aquele que aciona o evento, nesse caso onChange.
Então, é isso que a gente está interessado.
Event.target, esse event.target tem um type, tem um name, tem um value, como atributos
ou chamados propriedades no react.
A gente está interessado na propriedade do valor, que é o value, que é aquilo que a
gente digitou.
Então, vou salvar aqui e vai atualizar automaticamente lá.
Vamos digitar alguma coisa.
Digitei, você note que ele deu alguém aqui, g.
Eu digitei a letra g e apareceu aqui um console log, embora que não tenha aparecido no input,
porque a gente não mudou o valor do estado.
Por isso que ainda está aparecendo alguém aqui, embora que o console log tenha o g.
No final.
Então, a gente aprendeu como pegar o valor do input da coisa que a gente digitou.
A gente só precisa mudar esse estado aqui para o novo valor, porque na hora que você
muda o...
Na hora que a única...
O único jeito de você mudar esse nome aqui é mudando o estado.
E por mudar o estado, vai fazer o react chamar a função render novamente.
Toda vez que muda o estado do componente, a função render é chamada de novo.
Então, o que a gente vai fazer no onNomeChange?
Vamos fazer thisSetState.
Essa função setState é usada para atualizar ou mudar o estado do componente.
É sempre assim.
Você não pode fazer assim diretamente, não pode, porque tem que ser...
É uma questão de imutability no inglês, que o estado é imutável e você só pode
mudar o estado se você fazer uma cópia do estado e botar a cópia por cima do estado
anterior.
Não pode modificar o estado diretamente.
Tá bom?
Por isso que a gente não pode diretamente mudar o estado assim.
Tem que ser sempre que chamar essa função setState, que é parte do componente, palavra
chave desse.
Então, a gente vai dar o setState, passa um objeto com o nome da propriedade que a gente
quer atualizar, nesse caso vai ser o nome e o novo valor de nome, que vai ser o que?
Vai ser event.target.value.
Tá bom?
O salvar.
Vamos ver o que vai acontecer quando a gente digitar.
Deu um erro.
Vamos ler o erro.
Uncalled type error, cannot read property setState of undefined.
Tá dizendo que tá chamando setState nessa palavra chave vez que não está definida.
Por que que aconteceu isso?
Porque a gente não deu um bind na função pro componente.
Se você dar um console log aqui, eu já expliquei isso em vídeos anteriores, a palavra
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: