Um momento
Aula 46
Cursos / Aprenda TypeScript - Tutorial Básico Vindo do JavaScript
Como Criar um Componente de Classe no React com TypeScript

Summary

# Resumo da Aula: Criando um Componente de Classe em React com TypeScript

## Introdução
Nesta aula, foi abordado como criar um componente de classe em React utilizando TypeScript. O exemplo utilizado foi um contador simples, no qual um botão aumenta um número ao ser clicado.

## Estrutura do Componente
1. **Criação do Arquivo**: Um novo arquivo chamado `contador.testx` foi criado.
2. **Definição da Classe**: A classe `Contador` é definida, estendendo `React.Component`.
3. **Uso do TypeScript**:
   - As interfaces para `props` e `state` são definidas.
   - O estado (`state`) é estabelecido para manter a contagem do contador.
   - Inicialização do estado com `contagem: 0`.

## Implementação
- **Metódo Render**: O método `render` retorna um componente JSX com uma div indicando que é um contador.
- **Botão de Incremento**: Um botão é adicionado, que ao ser clicado, invoca uma função que incrementa a contagem.
- **Uso do `setState`**: A função `setState` é usada para atualizar a contagem. O TypeScript verifica se as propriedades estão corretas, e reclama se objetos inválidos forem passados.

## Detalhes Técnicos
- A interface `state` foi definida com uma propriedade `contagem` do tipo `number`.
- A função `onClick` é vinculada ao contexto da classe usando `this.onClick.bind(this)`.
- Os tipos para `props` e `state` foram passados como parâmetros genéricos na definição da classe.
  
## Observações
- Tipos opcionais em `props` foram demonstrados, permitindo que valores sejam indefinidos.
- Foi discutido sobre as limitações e reclamações do TypeScript quando tipos incompatíveis são passados para `setState`.

## Conclusão
A aula finalizou reafirmando a importância de definir corretamente as interfaces em TypeScript ao trabalhar com componentes de classe no React. Foram feitos exemplos práticos para ilustrar a implementação e as funcionalidades do componente contador.

Até a próxima aula!

Video Transcript

Olá pessoal estamos de volta com mais uma aula. Na cidadona nós vamos ver como se faz o componente de classe no react com type script, vamos ver como definitamente é fácil para o estado do componente Vou fazer aqui o seguinte, um contador, tem um botão você clica e o número vai aumentar Vamos criar aqui um novo arquivo, contador.testx Clasta contador Agora deixa eu portar o react aqui, se não vai reclamar Como estou usando o classe a gente sempre tem o extend, react.component Mas agora está no type script, então como é que vai fazer isso? Vou dar o render aqui, vou dar o return Vou colocar o div só para dizer contador E vamos fazer já já Bem eu vou exportar isso aqui na mesma hora Quando você usa o type script aqui, normalmente quando você pega o cnote que o react opona quando você deriva da classe, normalmente a gente passa como aqui desses genéricos A gente passa, você tem p, note que a gente tem p, s e os outros ali O p vai ser do props, o s vai ser do state Então a primeira interface que a gente vai passar dentro desses assinados de men e mais Vai ser o props e o segundo vai ser o state Serão interfaces que a gente vai definir para este componente Você pode nomear de qualquer maneira Qualquer nome vai ter que definir E vou definir interface para props e descomponente e interface para o estado desse componente No estado a gente vai manter o contador, a contagem, o número Então vamos ver aqui Então é o seguinte, para o render retorno J, X, L, remember? É o título explícito O render aqui você pode quiser para até definir com public Só adiciona um tipo Class e tal e tal, contador Agora vamos supor que a gente queira acessar o estado do componente Des, mont state e o número né Sei lá, chamar de Contagem Agora como é que a gente está reclamando? Propriedade e contagem não existe no tipo read only state O estado é um tipo de read only Vamos definir então, na interface do state Como segundo, parâmetro desse seu form aqui Você vai definir a interface para o estado do componente Contagem vai ser o número, só isso Pronto Legal, mas qual é o valor desse número né Então se dá pra gente fazer a iniciação do state Né Pode fazer o seguinte Static Contagem zero Opa, não tem Conta e viva Então o estado inicial vai ser Contagem zero Não tem a uso da propriedade static Então esse cara vai Obedecer a interface state Se não tivesse isso Sei lá, será que era reclamaria? Então, está meio esquisito Mas se eu botasse tipo state Não sei, vamos ver se funciona mesmo Que eu não sei, que está configurado para Permitir se usa Vamos lá Contador e tal e tal Não tem props Vai no app Antes da lista ou depois da interface Contador e vou dar um import Contador Contador Vamos ver aqui Ah, deu erro Desse ponto state é no Ah Não Bem, não está funcionando essa maneira static Talvez eu não tenho transformador, mas deixa assim mesmo Vou falar no constructor mesmo Então vou pegar isso aqui Constructor Props Super props Porque estamos derivando o react component Esses props, ou tem Plistamente, any type Esse props vai ser props Tipo do props que a gente definiu aqui No caso, não tem nada E desse ponto state Vai ser o digital inicial Que a gente já tinha definido aqui Eu estou curioso por Outra maneira Deixa eu ver react Aqui Docs Até Cadê o state State State State State State State O look em space O look O look Estou curioso se tivesse o static Parece que tem que ter o transform Eu não me lembro muito bem Já usei Tem que ter o transform, eu deixo como é o exercício Se você quiser aquela Notação Qualquer maneira, vamos voltar Está bem State Vou ver se o state está errado Se eu passar algo que não tem nada a ver Que foi definido na interface state Estado Contagem Não pode associar O tipo vira um state Então ele realmente checou o tipo Ele viu que não tinha essa propriedade No state, se eu tivesse adicionado Stream Ele iria funcionar Mas como a gente não tem Ele está reglamando Está certo Então, vamos ver Agora vamos suger o botão Botão Está Um click Botão Botão Um click Um click Um click Um click Um click Um click Um click Um click Um click Um botão Um botão Um click Um click Não existe Olha que ele já está reclamando Que essa função não existe No tipo contador Defini Um click Um click Um click Eu acho que não vai retornar na mental void E não pega nada Com parâmetro No click Ele vai dar o vset state Contagem Vai incrementar D state, contagem, mais um Eu quero te mostrar também Se eu passasse outra coisa aqui no set state Ele iria reclamar também Ele não vai deixar Mas se você realmente tivesse Aqui Novo Estado Às vezes a gente tem esse problema De você Tiver, por exemplo Hum Você tem o state Contagem Vamos dizer que tem nome, ABC E aqui no Novo Estado Você só tem a A propriedade Vamos ver aqui Vamos ver aqui Só adicionar um nome aqui Só de ler, só para ter Uma propriedade extra no estado Então o estado tem duas propriedades Nome e Contagem Eu queria te mostrar Às vezes a gente não tem Todo o estado na hora de dar o set state Ah Vamos ver aqui Não reclamou aqui Interessante Já tinha Fico qualquer maneira novo estado Set state Novo Estado Normalmente ele iria Ver aqui, por exemplo, se A variável fosse tipo state Ele iria reclamar Eu quero mostrar aqui A maneira de usar a palavra chave as Quando você faz a acerção De tipo Para dizer para o compilador Eu sei, esse tipo aqui vai ser esse tipo Por exemplo, aqui Se eu disser Esse tipo aqui vai ser do tipo state Eu tenho certeza Agora eu não posso usar Dessa maneira aqui Por causa do JSS Quando você tiver em arquivos TSS Devido ao JSS ter Conflito com essa notação De acerção de tipo Para você dizer o compilador Eu sei que o tipo desse objeto Vai ser por favor interpretar esse tipo Dessa objeto como tipo Da interface state Não dá para usar essa Notação, então tem que fazer outra notação Chamada as Estate Isso que eu queria mostrar Quando você estiver usando com TSS Tem que usar a notação alternativa Do state Porque não pode usar outra com O state por causa de conflito com JSS Então eu vou ver daqui Então você vai dizer Compilador, eu sei Interpreta o seu objeto Vai ser interpretado como state Não reclame Se não tiver algo Até a ter um negócio Vamos ver se funciona aqui Quer ver Mesmo sim Ele está até inteligente que ele já note Que o set state não precisa ter Todas as propriedades Eu me lembro que Atingamente às vezes dá problema Que ele não sabia Que o set state pode passar Só Do state Em vez de todo o state Agora parece que já está Melhor Deixa você ver a versão do TSS Eu nem sei qual é Ta no react script Type script versão 3.7.5 3.7.5 Certo Não precisa disso Mas é só para mostrar O S state Certo com montagem Contagem mais um e tal Vamos clicar Vamos ver Voltando aqui Contador Ah, ah Vez ainda definido Ah, tem que dar o bind Pode usar no curso do toro Para a função com o som de flash Vou fazer aqui this Onclick This Onclick bind Faltando aqui Dois, três, quatro, cinco Seis Ah, certo So, masked Pedido Vamos mexer bewusst Engenho fik Z da É de um eres um contagem inicial, você pode checar aqui contagem inicial, não for definida ou não, né? Se você for passar a zero, eu poderia fazer isso aqui, props, contagem inicial. Mas se fosse zero, você nota que ele ia, se eu fosse indefinido, qualquer valor falso, né? Falso e ia bater lá de volta para o zero, mas em qualquer maneira, 1, 2, 3, 4, 5, 6, seria pegava esse valor aqui, então adicionei na props, pode ter ou não, então pode ser que esse valor seja, não seja passado, nesse caso, iria ter, por quadrão, ser zero, contado zero, voltando aqui no led de texto, voltando no app, contador, contagem inicial, eu muto 10, tomando aqui, ele é bater lá no checar, então é fácil, certo, contagem inicial, passou como um number, correto, vamos pegar aqui no estado de sinal, você está a proposta contagem inicial, está com 10, 11, 12, 13, vamos fazer uma coisa errada para ver se reclama, se eu passasse um string, acidentalmente, string com valor 10, ele ia reclamar, tipo string não pode ser associada ao tipo união de número ou indefinido, note que quando você pôs o sinal de interrogação lá, ele determinou o tipo, como fosse a união, união de número e undefinado, pode ser número, pode ser undefinado, não passei como próprio, o que acontece se fosse no? Não, também não funcionaria porque a união não inclui no, interessante, hein, eu passasse um array, um, dois, três, a array de número não é o nosso alceio ao tipo número, ok, certo então, então vou deixar um 10 como número, adonde que o app nem tenha check de tipo, né, vamos ver qual é o tipo empliste, jsx element, legal, então jsx element, empliste, então vamos revisar o que a gente fez aqui, criamos essa componente de classe chamado contador que estende de react component, como a gente usa o TypeScript nós podemos adicionar o check das propostas de state, para poder fazer isso adicionando esse sinal de menor, sinal de maior, tem dois parâmetros, você pode passar aqui, o primeiro é o P, segundo é o S, e tem outros que a gente pode ver aí, esse próprio, mas o primeiro P é o props, você pode passar uma interface, normalmente a gente define interface aqui, e o state é o segundo, você também define outra interface, a primeira vai ser a interface para as props que o componente pode receber, a segunda vai ser o state que é o estado do componente, o componente mantém o estado para armazenar contagem e o nome, o nome só usei para demonstrar ali outras coisas, mas nem precisou, então não construtou aqui, a gente sete o estado inicial, pega de props, a contagem inicial se tiver ou não, foi opcional. Fizemos o barro do click para poder funcionar direito, vou falar a verdade, você definida corretamente na função com click, a gente usa os dois, na hora de que a gente fez o novo estado set state com a contagem mais um, eu demonstrei o uso do as state aqui, só para dizer que você não pode usar a maneira notação de bracket, devido a conflitos com o JST, aqui a opção render retorna tipo JST.element, fiz o contador, state contagem e o botão, só para incrementar só isso mesmo, mas o principal que era aprender como adicionar, definir a interface do state dessa maneira aqui. Por essa aula é só e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: