Aprenda React: de conceitos iniciantes à criação de um aplicativo completo React | Zoë Davidson | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Aprenda React: de conceitos iniciantes à criação de um aplicativo completo React

teacher avatar Zoë Davidson, Software Engineer & Cinematographer

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Introdução

      0:37

    • 2.

      Projeto do curso

      0:26

    • 3.

      Por que reagir?

      0:57

    • 4.

      Componentes

      0:50

    • 5.

      Adereços e estado

      0:50

    • 6.

      Crie o aplicativo React

      1:06

    • 7.

      Bootstrap

      0:39

    • 8.

      Configuração do React

      14:38

    • 9.

      Construindo um contador

      16:50

    • 10.

      Refinando o contador

      17:58

    • 11.

      Teste

      7:04

    • 12.

      Conclusão

      0:49

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

216

Estudantes

7

Projetos

Sobre este curso

Este curso ensinará tudo o que você precisa saber para escrever React, desde conceitos iniciantes até avançados:

  • O que React é
  • Como usar componentes e estado
  • Como construir um contador interativo

Meu nome é Zoë, sou engenheira de software e ex-professora de filme. Você pode conferir meu trabalho aqui.

Este curso é para qualquer pessoa que já teve interesse em aprender a codificar, ou está olhando para enfrentar uma entrevista técnica em um futuro próximo.  Seu projeto de curso será criar seu próprio contador usando o React. 

Este curso incluirá um guia passo a passo sobre como aprender React a partir do zero.

  • Como usar React
  • O que faz uma biblioteca diferente
  • Como construir um componente
  • Como usar o estado

Depois de fazer o aula, não se esqueça de deixar uma avaliação sobre o que você achou dele!

RECURSOS

Equipamento de filmagem

  1. Canon 5D IV
  2. Canon 24 - 70 f/2.8
  3. Amaran 60x - acessível e poderoso
  4. Desview T3 Teleprompter
  5. Montagem pequena em mesa de equipamento
  6. Sennheiser MKE 600
  7. Braço de microfone de neewer
  8. Zoom H4n Pro

Equipamento de desenvolvimento

  1. M1 Macbook Pro 13"
  2. Teclado mágico da Apple
  3. Logitech MX Anywhere
  4. Suporte duplo para laptop
  5. LG 4k 27"
  6. Cadeira de mesa ergonômica - barata
  7. Bose QC 35 II
  8. AirPods Pro
  9. Monitor de café expresso e stand (viagem) - incrível

Conheça seu professor

Teacher Profile Image

Zoë Davidson

Software Engineer & Cinematographer

Professor

Hey! I'm Zoe, a software engineer, filmmaker, and former professor from Toronto, Canada. I have an MFA in Film from Howard University, and also do work as a software engineer.

In the past, I've worked for the University of the District of Columbia, the Academy of Motion Picture Arts and Sciences, Lionsgate, Huffington Post, and I'm a member of organizations like the Canadian Society of Cinematographers.

The films that I've worked on have been featured at festivals around the world, including Sundance, ABFF, Trinidad Tobago Film Festival, and CaribbeanTales.

Check out my latest work, here: zoeahdavidson.com

Visualizar o perfil completo

Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução: Você sabe qual é a pergunta de entrevista de front-end mais popular? É, você pode construir um contador? Hoje? Explicaremos tudo o que você precisa saber para criar seu próprio projeto usando o React, incluindo como criar esse contador para que você possa ser o melhor em sua próxima entrevista de emprego. Oi, meu nome é Zoe. Sou engenheiro de software e ex-professor que adora educar outras pessoas sobre como aprender a programar Eu criei muitos sites e aplicativos da web usando React, CSS, HTML e outras tecnologias. Ao final deste curso, você poderá fazer isso sozinho. Vamos começar. 2. Projeto do curso: Projeto de classe. O projeto dessa classe é criar um contador totalmente funcional usando o react para isso. Você precisará acessar um computador e um editor de código, como o Visual Studio Code. Você também deve ter algum conhecimento do script Java, bem como do HTML e do CSS. Deixarei links para todos os ativos e recursos de que você precisará na guia Projeto e recursos abaixo. 3. Por que Reagir?: Por que React? O React foi desenvolvido no Facebook e lançado ao público em 2013. Ele foi criado inicialmente para lidar com recarregamentos e atualizações ineficientes de páginas que, na época, exigiam que todo o Dom ou modelo de objeto de documento fosse repintado. A cada atualização, React corrige esse problema criando o que eles chamavam de Do virtual, uma representação do Dom na memória Isso permitiu que o React atualizasse apenas os aspectos ou componentes do Dom que foram alterados, e não a página inteira, resultando em melhor desempenho. O React mudou o jogo no espaço de desenvolvimento web e ainda é uma das bibliotecas mais populares do mercado Devido ao uso de componentes, os desenvolvedores agora podem escrever código modular com muito mais facilidade, o que lhes permite desenvolver muito mais eficiência e eficácia. Outras estruturas populares que geralmente são comparadas ao react incluem View e Angular 4. Componentes: Componentes. Os componentes são trechos de código reutilizáveis que reagem aproveitam para manter sua Pense neles como os blocos de construção que os desenvolvedores usam para criar aplicativos. Um componente é um trecho de código independente, reutilizável, que encapsula sua própria funcionalidade, estado e estrutura Esses componentes podem ser considerados como uma combinação de HTML e Javascript ou JS, que é usada no react. Cada componente pode ter seu próprio estado, que representa dados que podem mudar com o tempo, e um conjunto de propriedades ou adereços que permitem que os componentes principais transmitam dados aos filhos Assim como o HTML tem elementos dentro de outros elementos, React tem componentes dentro de outros componentes. Esses componentes internos são considerados filhos dos componentes externos. 5. Adereços e estado: Adereços e estado. Para realmente entender e usar o react ao máximo, precisamos falar sobre estado e propriedades Ou como são chamados de adereços. Vamos dar uma olhada em um componente básico. Esses componentes estão realmente em sua base, apenas funções. Eles podem receber argumentos, modificar variáveis e retornar um valor. Simplificando, podemos pensar props como os argumentos que são passados para nossa função quando ela é chamada de estado como as variáveis locais que só existem em nosso determinado componente Expandiremos essa definição posteriormente, mas é importante entender como ela funciona primeiro. 6. Crie aplicativo React: Crie um aplicativo de reação. Há várias maneiras de configurar um aplicativo de reação. Neste curso, abordaremos os mais populares. A forma original de configurar um aplicativo react era usando create react app, ou CRA Como o React é uma biblioteca e não uma estrutura totalmente funcional, para que funcione totalmente, ele precisa de várias outras peças, como ferramentas de construção. aplicativo Create React também foi desenvolvido pelo Facebook para remover grande parte dessa complexidade e transformá-la em um comando simples, mas poderoso. Ao usar o aplicativo create react, você economizará horas de dor de cabeça ao tentar iniciar um novo projeto de reação pela primeira vez. Para executar create react app, basta digitar px, create react app, seguido pelo nome do seu aplicativo no terminal e pressionar enter. Depois de alguns minutos, você estará pronto para começar. Você pode executar o comando sozinho em seu terminal se quiser ver como é a aparência do aplicativo create react. Nós o usaremos em nosso projeto. Usar o aplicativo create react é bom para um projeto pequeno como esse contador. No entanto, eu o alertaria contra usá-lo para construir algo maior, pois ele não está mais sendo mantido. 7. Bootstrap: Bootstrap. O Bootstrap é um dos frameworks CSS mais populares para o desenvolvimento de sites responsivos uso de código aberto é gratuito e é especialmente bom para criar primeiras páginas da Web para dispositivos móveis que reajam. O Bootstrap é baseado em HTML, CSS e Javascript. E, na verdade, fornece um conjunto de componentes, modelos e estilos de pré-design que permitem aos desenvolvedores criar e iterar rapidamente Ele também foi projetado para funcionar em vários navegadores, o que é ótimo para garantir que seu aplicativo exibido corretamente para todos os públicos Usaremos o React Bootstrap para acelerar nosso processo de desenvolvimento hoje 8. React Setup: Tudo bem, agora que entendemos um pouco mais sobre o React, vamos criar nosso próprio contador. Como mencionei, é muito importante entender como construir, pois é uma daquelas coisas que você ouvirá em algumas entrevistas de emprego e se decidir seguir a carreira de desenvolvedor front-end. Então, vamos começar. Então, aqui você pode ver como seria o contador acabado. Não há muitos estilos e designs, mas é bastante simples. Mas em termos de lógica, é funcional. O que eles querem que você faça é criar algo que exiba um número e permita que você o adicione. Assim, você pode adicionar um ou subtrair um dele. Muito simples, mas vamos ver como podemos realmente construir isso. Se passarmos para o Visual Studio Code, a primeira coisa que vamos querer fazer é criar um aplicativo de reação. Como mencionei antes, podemos usar o aplicativo create react para este projeto, pois ele é muito pequeno. Mas, no futuro, falaremos sobre o uso de soluções como. Em seguida, vamos começar nosso aplicativo Create React, PX createapp E então vamos chamá-lo de Counter. Isso vai levar alguns minutos para começar. Vamos voltar para ele quando terminar de ser construído. Agora que nosso aplicativo create react finalmente criou a pasta, vamos começar a trabalhar com ela. Vou mudar o diretório para a pasta. E aí está, estamos com ela aberta. Tudo bem, então vamos abrir isso e ver com que tipo de arquivos e pastas estamos trabalhando. Então, no lado esquerdo, você verá que temos várias pastas diferentes que foram basicamente criadas para nós como resultado do uso do aplicativo Create React. Como mencionei antes, o React é uma biblioteca e não uma estrutura. Portanto, é necessário instalar várias outras ferramentas de construção para que funcione corretamente. Então, se dermos uma olhada no Read me, isso nos dirá um pouco mais sobre como trabalhar com o aplicativo create, react, o que podemos fazer, quais comandos podemos executar. Se você já trabalhou com o NPM ou o Note no passado, deve estar familiarizado com alguns desses comandos Caso contrário, vamos resumir que você deve estar familiarizado. Se você já trabalhou com o Node ou o NPM no passado, você deve estar familiarizado com alguns desses comandos Vamos examinar aqueles que criam ofertas de aplicativos de reação para nós. Portanto, temos o NPM Start , que executará o aplicativo no modo de desenvolvimento no host local 3.000 O host local 3.000 é o local de escolha para executar Isso se baseia apenas em uma configuração definida pela equipe de criação e reação. Então você tem outro comando chamado NPM test. Isso permite que você execute testes em seu aplicativo de reação, e vamos dar uma olhada nesses testes em um segundo. Também temos uma fatura de produção que criará uma versão otimizada de produção. Temos o eject, que eu pessoalmente não usei muito, e depois temos um pouco mais sobre o que é o react, como ele foi construído, como usá-lo corretamente, coisas assim Então, eu encorajo você a ler isso. Leia-me se você ainda não o leu antes pois há algumas informações que podem ser úteis. Porém, como mencionei, o aplicativo create react não está sendo mantido no futuro. Portanto, as informações podem ou não estar atualizadas no momento em que você assistir a este vídeo. Tudo bem, agora vamos dar uma olhada no pacote Json. Então, novamente, se você já trabalhou com o NPM antes ou com o Jason, talvez esteja familiarizado, pelo menos, com o formato e entenda que esse é um daqueles arquivos necessários quando você está criando um projeto Portanto, o arquivo Json dot do pacote contém vários elementos diferentes que nos ajudarão a identificar nosso projeto e entender com quais versões estamos trabalhando das diferentes dependências que instalamos Então, no topo, temos o nome do nosso contador de pacotes. Sempre podemos mudar isso. Se não gostarmos , temos nossa própria versão, portanto, apenas nossa primeira versão, seja ela privada ou não. E então as dependências que temos que já estão instaladas Portanto, temos a biblioteca de testes, temos react, react, etc Agora temos nossos roteiros. Os scripts que acabamos de ver no arquivo leia-me. Hum, então, basicamente, o que eles fizeram aqui foi criar um script que é o NPM start Mas o que o NPM start realmente executa é o início dos scripts de reação. Portanto, é uma pequena redução de um comando mais longo apenas para nossa conveniência como desenvolvedores Em seguida, temos algumas configurações de link ES. O link Es vem pré-instalado com o aplicativo create react. Temos uma lista dos navegadores com os quais queremos trabalhar na produção e também no desenvolvimento. É basicamente isso. O pacote Jason não é muito elaborado no aplicativo create react Há algumas coisas importantes com as quais precisamos trabalhar. Mas ele crescerá dependendo do tamanho do projeto em que você está trabalhando. E à medida que instalamos coisas novas. Falando em instalar coisas novas enquanto estamos aqui, vamos instalar, reagir, o Bootstrap e ver como ele atualiza nossos pacotes Voltando ao terminal aqui, digitaremos NPM install E vamos instalar dois pacotes. Um é o react bootstrap e o outro é apenas o próprio bootstrap Esses dois pacotes juntos nos permitirão trabalhar com a funcionalidade completa do Bootstrap que está disponível para nós no react Vamos apenas sentar aqui e esperar que isso seja instalado. Acredito que precisamos de mais uma linha de código, então deixe-me pegá-la na documentação do Bootstraps Se formos ao Bootstrap React e clicarmos em Getting Started, também queremos importar, sim, veja aqui embaixo onde diz folhas de estilo e CSS Queremos importar isso em um de nossos arquivos. À medida que descemos, vou copiar isso. E então, quando chegarmos a esse arquivo, vou me certificar de importá-lo. Tudo bem, voltando para o nosso pacote A Jason. Você verá aqui que duas coisas mudaram. Então, instalamos em nossas dependências inferiores, temos o bootstrap, que foi E reaja com bootstrap. Então, esses são os dois que acabamos de pedir para serem instalados. Acabamos de, você sabe, fazer a solicitação no NPM e eles nos instalaram corretamente Como você pode ver na parte inferior aqui, também existem várias vulnerabilidades. Isso se deve, novamente, ao fato o projeto não estar sendo mantido. Mas, como mencionei, é uma das maneiras mais fáceis se você está apenas tentando começar a usar o react e aprender a usá-lo. Criar um aplicativo de reação é, na verdade, uma maneira simples de aprender a usar o Eu diria que há uma curva de aprendizado muito menor em relação a algumas das outras opções que estão disponíveis atualmente. Tudo bem, então vamos em frente e vamos dar uma olhada nos outros arquivos aqui. Portanto, temos um Git ignore. Portanto, se você trabalhou com o Git antes, saberá que o Git é um sistema de controle de versão que permite salvar seus arquivos e salvar versões diferentes dos seus arquivos, caso precise reverter ou voltar para reverter ou voltar para uma versão anterior de um arquivo com o qual está Mas em nosso Git ignore, veremos todos os arquivos nas pastas que basicamente predefinimos para não serem confirmados quando estamos enviando nosso código, potencialmente para o Github, então nossos módulos de nó E isso porque os módulos de nós são uma pasta muito grande que inclui muitos dados de várias dependências que, se fôssemos enviar, se adicionássemos ao nosso Github os aumentariam e aumentariam Então, nós realmente não queremos insistir nisso. Isso é algo que pode ser instalado com base no pacote nas versões do Jason toda vez que clonamos nosso arquivo novamente ou outra pessoa clona nosso Também temos algumas outras peças, incluindo a cobertura nas pastas de compilação e alguns arquivos diversos. Tudo bem, vamos falar sobre as coisas boas. Então, temos duas pastas aqui, temos pública e temos fonte. Então, público é onde todos os nossos tipos de imagens e coisas que estão sendo mostradas atualmente em nosso aplicativo, nossa vida no momento. Bem como nosso arquivo HTML de pontos de índice. E então temos nossa fonte, aquela que também contém vários outros arquivos. Então, vamos mergulhar nesses dois. E o que podemos fazer para realmente ter uma boa ideia de como esses dois funcionam é iniciar nosso aplicativo. Então, lembre-se de que mencionei no pacote dotson foul havia um script chamado Vamos executar isso no terminal e ver o que ele traz. Então, digitaremos NPM Start. Vamos pressionar Enter e nos dar um segundo. Inicie o servidor de desenvolvimento. E certo, bom, estamos prontos para ir. Temos esse ícone de reação giratório. E então diz Editar aplicativos de origem e é seguro carregar. E então aprenda o React que está vinculado à documentação do S. Incrível. Então, pelo menos, sabemos que nosso aplicativo está funcionando. Então, vamos voltar aos nossos arquivos e agora ver onde todas essas coisas estão morando. E o que vamos fazer deixar essa janela do terminal aberta apenas para que nosso aplicativo continue sendo executado em segundo plano. Então, se formos para nossa pasta pública, normalmente em HTML, todas as nossas informações são armazenadas no arquivo HTML. Então, quando abrimos isso, esse era um projeto HTML normal, esperávamos encontrar todas essas informações, todas as coisas que acabamos de ver nesse arquivo. No entanto, quando olhamos aqui, não está lá. Temos nosso elemento principal aqui e muitos metadados aqui. Coisas que podemos mudar. Podemos mudar o nome e o conteúdo aqui. No entanto, se rolarmos para baixo até o corpo, você notará que todas as informações que acabamos de ter em nosso navegador não estão disponíveis. Você verá que no corpo há apenas dois elementos. O sem script, que diz às pessoas que não têm o Java Script habilitado que elas precisam dele para executá-lo. E então há uma div singular que está vazia, o que é muito interessante De onde realmente vem nosso projeto? Então, se tivermos um div completamente vazio, isso realmente não faz sentido porque, se voltarmos para a página, veremos que temos todas essas informações Quer dizer, temos texto, temos um ícone giratório e um link Obviamente, isso tem que ser morar em algum lugar. Certo, bem, se voltarmos para nossa divisão, vamos dar uma olhada nela de perto Vemos que ele tem o ID de root. Então isso significa que talvez em algum lugar ao longo do caminho isso seja direcionado e essa raiz signifique alguma coisa, certo? Então, se você assistiu ao vídeo anterior que eu tenho sobre Java Script, você entenderá isso. Você provavelmente se lembrará disso. Você provavelmente se lembrará de que existe um método chamado get element by ID. Então, vamos passar para o nosso arquivo JS de pontos de índice à esquerda aqui. E dê uma olhada nisso. Então, olhando em nosso arquivo JS de pontos de índice, temos um monte de importações. Então, agora estamos no mundo do Javascript, certo? Nós meio que fizemos a transição do HTML para o Javascript completo. E quando vemos, mas não é exatamente Javascript como estamos acostumados, quero dizer, você vê que temos esse tipo de elemento div, como estruturas Então, vamos analisar linha por linha e ver o que é tudo. Então, importamos o react do React. Novamente, trabalhando com o NPM. Instalamos esse pacote chamado React, essa biblioteca chamada React, e agora importamos a instância do react a partir dele. Temos import react, import index CSS, que é apenas o arquivo CSS. Importe o aplicativo, que é outro arquivo aqui embaixo. E, em seguida, importe o relatório web vitals. Onde eu realmente quero começar a prestar atenção é na linha sete aqui, onde diz que raiz constante é igual a reação dom dot create route Então, dentro dessa rota de criação , diz document dot get element by ID route. Obviamente, algo está acontecendo aqui em que obtemos esse elemento raiz, obtemos esse div e agora estamos criando algum tipo de rota com base nesse elemento Então, fizemos isso aqui, criamos uma rota na reação e criamos essa rota variável, certo? Então dizemos renderização raiz. E dentro disso, agora estamos renderizando react no modo estrito. E então, dentro disso, estamos renderizando esse aplicativo, essa coisa de aplicativo Agora, com base no que lemos antes, aplicativo era apenas um arquivo Javascript. Mas ambos estão em estrutura estranha de tipo de elemento, certo? Então essa é essa coisa de JSX sobre a qual estávamos falando. Esse Javascript meio que se misturou com HTML, o que nos permite escrever HTML dentro do Javascript. Então, vamos continuar e mergulhar nos aplicativos. Os aplicativos parecem um arquivo Javascript bastante normal, mas tem aquela combinação JS HTML e Javascript em andamento. Agora, como você pode ver, é apenas uma função normal chamada app e retorna esse elemento HTML. É realmente um mestre brilhante lá. O que isso é, na verdade, é um componente. Aquelas coisas sobre as quais estávamos falando antes. Componentes que têm sua própria tela e sua lógica e tudo o está contido aqui para nós é esse componente. Agora, se examinarmos linha por linha, veremos que ele importa um logotipo do logo dog, mas esse logotipo do dot logo, dot Sg, que está na mesma pasta de origem Ele importa aplicativos, que é esse arquivo de estilo. E então ele cria essa função chamada app e, na parte inferior, ele a exporta. E então, nesse arquivo JS de índice, ele o importa. Certo? Em aplicativos, retornamos um div com vários elementos nele, dentro dele Portanto, ele tem um div com uma classe MpPHaderMageLogoitCedeMageLogoI'm Pensando que esse é o logotipo do React qual estávamos falando antes. E então temos aquela linha de código que vimos. Nós temos essa linha de texto, nós vimos. Diz isso, forneça slash app dogs e salve para recarregar. E então, aqui embaixo, está escrito Aprenda, reaja. Agora, se voltarmos aqui, isso é exatamente o que temos. Temos nosso logotipo, temos aplicativos de edição e origem para sentar e salvar para recarregar. E nós aprendemos, reagimos. Então, finalmente encontramos o lugar onde todas essas informações estavam vivas, certo? Então, entendendo, reaja um pouco mais. E entendendo a estrutura, temos esse arquivo JS maior com pontos de índice, que na verdade contém todas as nossas informações, certo? Basicamente, é onde tudo se acumula. Mas então, dentro do índice, temos aplicativos de aplicativos, que é onde a informação, a lógica que vamos realmente exibir, realmente vive. E agora, antes que eu esqueça quem somos em cães de índice para que nosso bootstrap de reação seja executado, se você se lembra, temos que ter certeza de que, na parte superior do arquivo, importamos o bootstrap Legal. Devemos estar prontos para ir agora. Tudo bem, agora que entendemos um pouco melhor a estrutura do nosso aplicativo, vamos continuar trabalhando com aplicativos e começar a criar nossos componentes. 9. Criando um contador: Esse é um estilo antigo de componente que vamos transformar no que chamamos de componente de função de seta. Os componentes da função de seta são apenas uma maneira mais sintaticamente limpa escrever e criar Isso não é estritamente necessário, mas vou fazer isso porque é uma boa prática saber como fazer isso e mostrar como fazer isso. Se prosseguirmos, vamos realmente mudar isso. Então, diz que aplicativo constante é igual a seta, e então vamos clicar Tudo bem, e acabamos de transformá-lo em um componente de função de seta. Incrível. Já estamos um pouco mais modernos que quando analisamos nosso aplicativo aqui. Quando analisamos os aplicativos de origem, realmente não precisamos muito disso ou de nada disso. Para ser honesto, o que vamos construir é que o contador é, na verdade apenas uma página singular com alguns elementos. Podemos nos livrar da maior parte disso. Acho que uma coisa que podemos fazer aqui é limpar tudo o que está no aplicativo aqui. Manteremos o documento geral do aplicativo, mas apagaremos tudo o que não estamos usando e o salvaremos. Tudo bem, agora temos nosso aplicativo vazio, e se você ver, temos apenas uma página em branco simples, que é exatamente como queremos começar. Se você estivesse iniciando um novo projeto de criação de aplicativo de reação, essas são as etapas que eu recomendo que você siga, certo? Você pega seu projeto, o limpa, instala os pacotes de que precisa e, em seguida, começa a trabalhar com ele. Tudo bem, então, daqui para frente, há algumas outras melhores práticas que queremos empregar ao trabalhar com o React Então, primeiro de tudo, dentro da nossa pasta de origem, vamos criar outra pasta chamada Components. Agora, a razão pela qual criamos esse componente é porque, especialmente quando você está trabalhando em projetos maiores, a acumular o número de arquivos menores começaremos a acumular o número de arquivos menores muito rapidamente E isso pode se tornar muito complicado se eles estiverem todos na sua pasta de E não é a melhor ideia tê-los todos em todos os lugares. Torna-se muito difícil depurar e definir o que você está procurando melhor prática é criar pastas separadas com base nos recursos em que você está trabalhando e nas funcionalidades em que está trabalhando, apenas para manter as coisas limpas e simples em nossa pasta de componentes. Agora vamos continuar e criar alguns dos outros componentes que precisaremos Se eu escrever, clicar e criar um novo arquivo, sabemos que estamos criando um contador. Então, vamos começar criando um que diz counter counter Jsx enter Incrível, criamos nosso primeiro arquivo JSX. Agora, a próxima coisa que vamos querer fazer é criar nosso componente contador. Agora, há duas maneiras de fazer isso. Existem formas de preenchimento automático de fazer isso, ou existem maneiras manuais de fazer isso Portanto, se você tiver a extensão instalada, poderá digitar R, A FCE, que é S sete trechos, ES sete, e react snippets é a extensão que você deseja instalar se quiser trabalhar com isso E o que isso fará é, na verdade, criar esse componente para nós. Então, vamos pressionar Enter para que possamos ver como é. Em seguida, vamos construí-lo manualmente. Então, se pressionarmos Enter, você verá que ele realmente faz todo o trabalho pesado para nós. Importa, reage por nós. Ele cria um elemento chamado contador. Ele retorna um elemento entre colchetes já com um Dave. E diz contra-atacado e já o exporta para nós. Essa é uma maneira realmente incrível de fazer tudo manualmente. Vamos usar esse para fazer tudo sem precisar digitá-lo manualmente. Livrar-se disso. Se vamos fazer isso sozinhos novamente, apenas impactamos a partir do React. E então iríamos em frente e criaríamos um contador. Além disso, outra coisa sobre os componentes de reação é que a primeira letra do componente deve sempre estar em maiúscula Isso é apenas parte da sintaxe necessária. contador de contras é igual à nossa função e, em seguida, retornaremos um div que diz Tudo bem, e isso é tudo que temos agora. E então também vamos exportar o contador padrão. Tudo bem, então vamos lá. Estamos prontos para ir. Temos nosso contador, temos nosso componente de contador criado e, você sabe, está pronto, mas se verificarmos nossa página, ele não vai aparecer, certo? Porque ninguém sabe que o contador existe. No momento, o contador está apenas em sua própria pasta de componentes, em seu próprio pequeno arquivo, e não está fazendo nada. Então, para que outras pessoas saibam que ele existe, precisamos importá-lo para qual arquivo? Nosso arquivo do aplicativo, porque o arquivo do aplicativo é um arquivo exibido atualmente. Então, vamos voltar ao aplicativo e depois vamos importar o contador. E uma coisa muito legal é que também podemos importar automaticamente o código do VS alguma inteligência e , portanto, se digitarmos com o. O colchete angular aberto e, em seguida, o nome do componente, na verdade, solicitarão que apenas o importemos do nosso suporte de componentes Portanto, é muito conveniente se tivermos que importar alguns componentes diferentes ou, você sabe, sem precisar importá-los e trazê-los para o arquivo. É uma maneira muito rápida e inteligente de trabalhar com isso. E a última coisa que queremos lembrar agora é que, se nosso contador ou componente não tiver filhos, queremos fechá-lo imediatamente. Queremos que seja um elemento de fechamento automático, então assim, topos assim. Perfeito. Então, mas como é ter filhos? Certo, como você pode ver agora, Counter é um aplicativo que não tem filhos, mas se quiséssemos que fosse um aplicativo que acolhesse crianças, sempre poderíamos colocá-lo como um elemento HTML normal e depois adicionar os filhos a ele. Certo. E funcionaria da mesma forma. Então essa é essa combinação divertida de Java script e HTML em ação Fantástico, então vamos nos livrar do segundo contador. Na verdade, não precisamos disso, e vamos começar a trabalhar em nosso aplicativo a partir de nossos arquivos de contador. Por enquanto, meio que terminamos com os aplicativos. Não precisamos do nosso índice ML no momento, a menos que queiramos alterar alguns dos metadados Vamos nos concentrar apenas nos contadores. Tudo bem, então temos nosso balcão. Temos um div, e tudo o que ele diz é contador. E se olharmos nossa página aqui, veremos que ela diz contador, então sabemos que a conectamos corretamente Agora, se voltarmos à nossa página, temos que pensar sobre quais eram os elementos que estavam no design inicial, certo? Tínhamos esse número, tínhamos um botão vermelho em um botão verde, ou um sinal de mais e um menos, mas eles não precisam ser vermelhos e verdes Então, queremos ter certeza de que construímos todos esses elementos, certo? Tudo bem, então vamos começar a construir isso. Então, dentro dessa div que eu quero criar, vamos fazer dela uma H para o número Então, vamos começar do zero e salvar isso. E, abaixo disso, vamos criar os dois botões. E em vez de fazer isso manualmente ou estilizá-lo manualmente, podemos realmente usar o React Bootstrap para estilizá-los um pouco mais Usaremos o botão do React Bootstrap. Como você pode ver, ele também nos fornece a inteligência e solicita que a importemos automaticamente. Vamos adicionar esse botão. Podemos usar o que é chamado de variante . O bootstrap do React nos dá uma opção, uma propriedade chamada variance Com essas variantes, podemos simplesmente usar um nome, como uma propriedade que foi predefinida, muito parecido com atributos em HTML, e dar a ela alguns estilos específicos Como resultado, há duas variantes com as quais vamos querer trabalhar hoje. Uma delas se chama Sucesso. Vamos encerrar isso. E então esse será nosso botão mais um. E então o outro vai ser, eu acredito que é perigoso, mas sim, vamos pegar nosso botão, copiá-lo e colá-lo. Nós vamos, acho que isso se chama perigo. Vamos digitar o segundo e alterá-lo para menos um Então, vamos dar uma olhada em nossa página e ver se ela funcionou bem. Já estamos quase 90% do caminho certo com o design. Então, temos nosso botão verde, que é mais um, e nosso botão vermelho, que é menos um. Muito bom ir. Mas mais uma coisa que eu quero corrigir um pouco é exatamente onde isso é exibido. Porque, no momento, está muito no topo da página. Na verdade, não é ideal para visualização adequada. Então, queremos apenas empurrá-lo para baixo na página só para tatuar. Então, a maneira como vamos fazer isso de novo é apenas arrumar nossos estilos, certo? Então, se formos ao nosso contra-elemento aqui, podemos realmente adicionar uma margem na parte superior dele apenas para nos dar um pouco mais de espaço. Portanto, podemos criar um arquivo CSS para adicionar todos os nossos estilos ou usar CSS embutido Agora, CSS embutido é algo que basicamente é o que diz Isso nos permite escrever literalmente os estilos na mesma linha. Isso nos permite escrever literalmente os estilos na mesma linha do nosso HTML, o que eu acho muito legal. Você pode ter usado isso uma ou duas vezes antes em seu HTML, mas é uma prática muito mais comum quando você está trabalhando com um React porque tudo é muito mais compartimentado Então, se quisermos adicionar nosso estilo aqui ao nosso Div, basta digitar o estilo STYLE E então usaríamos dois colchetes para usar a dinâmica do estilo embutido Então, gostaríamos de adicionar alguma margem. Vamos dar a ele uma margem geral de quatro Ram. E guarde isso, se voltarmos aqui, ótimo, temos um pouco mais de raiz. Vou adicionar um pouco mais de espaçamento talvez à direita do nosso botão verde aqui E então vamos fazer isso, vamos adicionar mesma propriedade de estilo e vamos fazer margem, certo. Novamente, outra coisa muito interessante sobre o react, certo? Em HTML, você digitaria margem, certo? Mas como estamos trabalhando com Javascript, na verdade queremos usar camel case Então, não haverá hífens quando estivermos digitando nosso CSS Vamos fazer margem, certo? Em seguida, digitaremos novamente em uma string qual deve ser nossa margem. Vou guardar isso. Perfeito. Tudo bem, e temos um pouco de espaço lá. E então vamos adicionar um pequeno espaço abaixo do cabeçalho. E devemos ser bons. Então, faremos a mesma coisa mais uma vez. Estilo, margem igual, parte inferior. E então vamos colocar duas rampas. Damos uma olhada lá, acho que estamos muito bem em usar o estilo Sempre poderíamos fazer muito mais com isso, mas normalmente em uma entrevista, eles não perguntarão muito mais em termos de estilo além desse ponto Então, vamos entrar na lógica e começar a trabalhar para realmente tornar isso um contador funcional. Tudo bem, então a próxima coisa que vamos querer fazer agora que terminamos com nossos estilos básicos é começar a trabalhar em nossa lógica real, nossa exibição de lógica e coisas assim Então, se você se lembra, temos esse zero, certo? E quando apertamos o botão de mais e o botão de menos, queremos que algo aconteça Agora, se nos lembrarmos do nosso script Java, exigimos que uma função onclick ou, você sabe, algo seja passado nessa função onclick para que algo realmente seja executado, certo Então, vamos começar a implementar isso de forma reativa. Então, como mencionei antes, react tem essa coisa chamada estado, certo? Portanto, o estado é literalmente o status dado de qualquer coisa que esteja acontecendo. O estado determinado do que está acontecendo dentro de um componente. Portanto, há uma maneira de realmente interagir com o estado que usaremos especificamente com o react. O conceito de estado é um pouco abstrato no início, mas se tornará muito mais concreto à medida que trabalharmos com ele. Então, a primeira coisa que eu quero fazer, certo, em vez de ter esse número zero, queremos ser um pouco mais dinâmicos, certo? Então, vou criar uma variável chamada contagem igual Então, vamos começar substituindo isso por contagem, certo? Agradável e simples. Nada muito louco até agora. E então, se verificarmos aqui, a contagem permaneceu zero. Bom, dê uma olhada. Mas agora que mudamos a contagem para ser uma variável, agora podemos trabalhar com ela de forma um pouco mais dinâmica, certo? Então, como mencionei, queremos usar essa coisa chamada estado. O React também tem essa coisa chamada ganchos, certo? Os ganchos foram introduzidos para reagir alguns anos, a fim facilitar o uso do estado em um elemento Antes disso, o estado não podia realmente ser usado em um elemento da maneira que o usamos hoje. Então, o que queremos fazer para usar o estado é realmente importar um gancho. E o que é um gancho é, na verdade, apenas um componente simples. Isso é o que o hook é, na verdade, é apenas outra função que é meio que extraída e estamos apenas importando sua funcionalidade para trabalhar com Tudo bem, então vamos importar o estado usado do react. Ótimo, agora que usamos o estado, vamos modificar a maneira como trabalhamos com a contagem de variáveis, certo? E eu sei que você está pensando bem, não poderíamos simplesmente chamar uma função e fazer isso com um clique e etc., etc Há uma maneira melhor de fazer isso com a reação quando estamos usando o estado em que há a própria variável real. Depois, há um conjunto, algo chamado setter, que nos permite definir o valor dessa variável Agora, a maneira de inicializarmos isso é por meio de um pouco de sintaxe específica Colocamos nossa variável real entre colchetes, ou seja, nossa variável inicializada e, em seguida, colocamos um comum ao lado dela E então, a convenção típica da forma como escrevemos isso é colocar set na frente do nome da variável. Se o nome da nossa variável for count, usaremos set count para que esse seja nosso setter E então vamos trazer o estado de uso quando se trata do ato, o próprio número inicializado Digitaremos e usaremos state e envolveremos isso nessa chamada de função. Agora você vê que nossa contagem de conjuntos mudou para uma função real em si. Ele será usado para nos ajudar a definir o estado. Ele se conecta ao gancho de estado U e nos permite habilitar essa funcionalidade E então temos nosso estado U trabalhando e fazendo sua mágica lá. Então, você verá que a contagem de conjuntos ainda está sublinhada porque, na verdade, ainda não a usamos Mas vamos usá-lo em apenas um segundo. E se voltarmos à nossa página aqui, veremos que nada mudou até agora porque o valor inicializado não mudou, certo? Mantivemos nosso zero lá e está funcionando perfeitamente bem. Agora, o que queremos fazer é usar esse setter para que possamos atualizar o valor da contagem dinamicamente, certo Toda vez que pressionamos o botão mais um ou o botão menos um, queremos que o zero aumente ou diminua. Certo? Então, a forma como vamos fazer isso é usando uma função onclick Será uma função onclick muito simples e direta que levará 2 segundos para ser implementada Portanto, se acessarmos nosso botão, como sabemos, os botões têm a funcionalidade de clique. Então, digitaremos nosso com um clique e, como novamente é Javascript, camel case é igual a colchetes. E então vamos chamar nossa contagem de conjuntos. Então, vamos usar nossos parênteses e chamaremos E vamos passar para os parênteses da contagem de conjuntos o valor que queremos que seja agora, porque temos a variável inicial O que conta o valor é o estado, certo? Então, a contagem é aquela parte do estado, qualquer que seja seu valor, seja um, 100 ou 10.000, esse é o estado atual. Então, podemos realmente usar isso em nossa função de adição aqui. Então, vamos pegar o valor da contagem, o que quer que seja no momento, e vamos adicionar um a ele. Então, muito simples. Vamos apenas digitar dentro da contagem definida, vamos fazer a contagem e, em seguida, adicionar um e salvar. E essa é toda a nossa função que nos permitirá adicionar um à nossa contagem. Então, se experimentarmos e clicarmos mais um, podemos ver que está funcionando. Então, podemos simplesmente adicionar, adicionar, e tudo está configurado. Realmente, construir um balcão não é tão difícil. Trata-se apenas de entender a lógica, as ferramentas e as etapas por trás delas. Se voltarmos aqui, podemos simplesmente copiar isso, movê-lo para o nosso segundo botão e alterar a contagem para subtrair um Ainda estamos nos referindo à mesma variável de contagem, mas quando alguém clica no menos um, queremos que ele subtraia Certo? Então, muito simples Se formos até aqui, subtrair, subtrair , esse botão agora está funcionando e temos todo o nosso contador configurado, e fácil. Legal. Essa é realmente uma forma de primeiro nível de configurar o contador. Certo? Seu entrevistador pode pedir que você configure o contador dessa forma Inicialmente, isso pode ser uma versão 1. Mas se você já fez uma entrevista técnica ou se ainda não o fez, às vezes o que os entrevistadores pedem que você faça é que, depois de fazer a primeira versão de alguma coisa, eles pedem que você repita e crie uma segunda Então, vamos entrar em uma possível iteração desse elemento. Então, falaremos sobre filhos de elementos, como ele passa adereços, como estado é aprovado e coisas assim Então, vamos para a próxima versão, duas. 10. Refinando o contador: Tudo bem, agora que temos nossa versão um completamente definida, vamos construir essa versão dois. Então, na segunda versão, o que seu entrevistador pode perguntar a você, o que alguém pode pedir que você faça em uma segunda versão é, na verdade, separar isso em diferentes componentes Porque uma das coisas bonitas do react é que ele permite que você seja realmente modular com as coisas com as quais está trabalhando. E você não precisa ter tudo aninhado em um arquivo HTML super longo, certo? Na verdade, você pode dividir as coisas em componentes menores. Como vimos ao passar o contador para o aplicativo, podemos, na verdade, acessar as coisas como se estivessem todas em um arquivo grande, mas mantendo-as separadas e organizadas Então, vamos detalhar um pouco mais sobre como podemos fazer isso. Uma coisa que poderíamos realmente destacar é a seção de botões, certo? O gatilho real do componente. Se quiséssemos criar um novo arquivo aqui, poderíamos chamá-lo de botões e pressionar Enter. E se eu fosse. Então, o que eu quero fazer com o botão agora é simplesmente abstrair essa lógica em seu próprio componente e deixá-la viva lá. Então, o que vamos fazer aqui é criar primeiro nosso componente de botão, depois pegar as informações do botão dos contadores e simplesmente copiá-las para o. E nós só vamos copiar um e eu vou te mostrar o porquê em um segundo. Vamos colá-lo aqui. Precisamos reimportar isso aqui. E isso é apenas um botão de reimportação do Maria Bootstrap para garantir que ele ainda funcione Então, a próxima coisa, botão igual a botão, já foi declarada é igual a botão, já foi declarada. Precisamos mudar o nome. Vamos chamar isso, vamos chamar esse botão personalizado. Ele mudará para um botão personalizado. Sim, então essa é outra coisa importante que você provavelmente já encontrou no script de trabalho antes de se certificar de que suas variáveis são exclusivas. Tudo bem, ótimo. Você notará que estamos recebendo um erro com a contagem definida aqui. Vamos trabalhar nisso em apenas 1 segundo. Por enquanto, acomode-se para que isso não nos dê um erro de compilação. Tudo bem, legal. Pronto para ir. Então, o que queremos fazer com nosso botão personalizado agora é basicamente criá-lo de uma forma um pouco mais modular, certo? Portanto, pode ser um botão de sucesso ou um botão de perigo. Pode estar à esquerda ou à direita. Pode ser um sinal positivo ou negativo. Então, queremos implementá-lo de uma forma que não precisemos usá-lo apenas para o caso de uso de um botão. Queremos implementá-lo de forma que, se tivéssemos um botão de mais e um menos e um botão de multiplicação e todas essas outras opções, pudéssemos fazer isso com nosso Então, a maneira de fazer isso é passando adereços ou propriedades, certo? Então, essas são coisas que vamos passar do componente pai do Counter para o componente botão que ajudarão a identificar o que esse botão específico deve fazer. Então, deixe-me mostrar como vamos fazer isso. Então, a primeira coisa que vamos fazer é transmitir essas propriedades. Então, há duas maneiras de pegar os adereços, certo? Então, poderíamos, basicamente, passar adereços como, eu não sei, a variante e o número ou qualquer outra coisa, certo? Sim, então podemos passar os adereços assim e depois pegá-los, você sabe, por meio de nossos adereços Certo. Essa é uma forma válida de transmiti-las, mas envolve muita sintaxe adicional que fará um código pareça um pouco lucrativo Em vez disso, o que queremos fazer é colocá-los em um colchete e, em seguida, podemos acessar essas variáveis diretamente Então, eu posso simplesmente ser constante, não preciso agora inicializar uma variante, uma variável variante Na verdade, posso simplesmente acessar a variante diretamente no código. Então, em vez de passar sucesso aqui, agora vou passar a palavra variante, a variável, certo? E então vamos resolver tudo isso. Então, você pode ver do que estou falando se passarmos a variante variável aqui e voltarmos ao contador e comentarmos essas duas possamos ver que não está mais funcionando. Certo, vamos realmente importar, vamos fazer essa importação aqui e vamos importar nosso botão, nosso botão personalizado do componente local. Importar botão não do Maria Bootstrap, mas do botão de barra Portanto, importe o botão personalizado de. Tudo bem, e depois vamos usá-lo. O que vamos fazer é criar um botão personalizado. No momento, é apenas um botão azul aleatório. Eu posso até comentar isso. Então, comentaremos tudo , exceto a variante, para que possamos ter certeza de que estamos fazendo um bom teste. É um número de botão aleatório, não há nada nele. O que podemos fazer agora é, na verdade, transmitir nossas propriedades. Usaremos variantes iguais e digitaremos sucesso porque a primeira foi sucesso, a segunda foi perigo Agora, o botão da variante está verde. Sabemos que, ao passar nossa propriedade de contador para botão personalizado em uma propriedade. na propriedade da variante e, em seguida, chamá-la de bring it e, em seguida, acessá-la no botão personalizado e usá-la como uma variante, ela simplesmente a canaliza diretamente. Certo? Estamos apenas perfurando o suporte do balcão ao botão Então, podemos fazer isso, então podemos fazer isso com qualquer propriedade com a qual queremos trabalhar, certo? Então, se quiséssemos fazer a mesma coisa com estilo, certo, se tivéssemos solicitações de estilo específicas, gostaríamos. Nós fazemos margem, certo? Um Ram, certo? E se voltarmos ao botão agora em vez do número, importaremos o estilo. Podemos fazer com que estilo seja igual a estilo. Na verdade, não precisamos do duplo, só precisamos de um estilo, certo? E, novamente, não podemos realmente dizer, mas você pode ver isso um pouco fora do centro. Teremos essa margem, certo? Tudo bem, então essa é uma maneira muito rápida de começarmos a usar propriedades de uma forma muito dinâmica, certo? Então, se criarmos um segundo botão, agora já temos dois botões com os quais trabalhar. E não precisávamos trabalhar muito, certo? Não precisávamos escrever a variante e escrever o estilo. E isso e aquilo, só precisávamos escrever em um, só precisávamos atualizar alguns campos simples, certo? Então, nesta, vamos transformar a variante em perigo e vamos remover o elemento de estilo aqui. Agora devemos ter um botão verde e um vermelho. Perfeito. Está indo muito bem. Agora, as outras duas coisas que queremos incluir são o sinal de mais um e o menos um, bem como a função onclick Certo, o que queremos fazer para que tudo funcione corretamente são duas coisas. Queremos passar qualquer que seja o número dentro do botão personalizado e, em seguida, também queremos passar a função em si. Então, se realmente mudarmos isso para não ser um elemento de fechamento automático e nós, como falamos antes, faremos com que seja apenas um elemento regular que envolve crianças. Vamos colocar mais um no primeiro. E se formos até Button agora, queremos acessar algo chamado Children. Há uma propriedade especial chamada crianças. Sim, há uma propriedade especial chamada Children que nos permite acessar qualquer coisa que esteja aninhada em um elemento de reação O que faremos aqui é que, em nosso botão, acessaremos em vez de onde acabamos de ver o mais um, na verdade, vamos mudar isso para dizer crianças. E salve-o. Então, se olharmos aqui, o react descobriu que , como o sinal positivo era filho do nosso botão personalizado aqui, queríamos ser filhos do era filho do nosso botão personalizado aqui, também queríamos ser filhos do botão personalizado Agora que indicamos que queremos usar uma criança lá, as crianças, todas as crianças agora viverão dentro do elemento de botão personalizado. Isso faz sentido. Então, acabamos de pegar o mais um aqui, colocá-lo no botão aqui passá-lo como crianças, que é um adereço especial E depois o passei para a nossa própria página. Vamos fazer isso mais uma vez, mas com nosso menos um Então, vamos mudar isso aqui, torná-lo um elemento que não fecha automaticamente, apenas um elemento regular. E vamos fazer menos um. Vamos salvar isso depois não mudar nada, basta voltar à nossa página e aí está. Está funcionando. Então, estamos apenas transmitindo crianças como faríamos com HTML, mas com nossos botões. Tudo bem, a última coisa que precisamos adicionar é nossa funcionalidade de clique, certo? Esse é um pouco mais, esse é um pouco diferente. O que vamos fazer aqui são duas coisas. Podemos escrever o botão ao clicar exatamente como fizemos antes e passar nossa contagem definida, contagem é igual a contagem mais E então isso funcionaria quando adicionássemos nosso clique. Então, quando adicionarmos nosso, clique aqui e clique em clicar. Então, o que quer que você passe no clique e tire isso, funciona, aí está. Estamos adicionando um a cada vez. Então essa é uma maneira de fazer isso. Outra maneira de fazer isso é abstrair completamente a lógica no componente. O que pode ser benéfico aqui é criar uma função chamada add one. Vamos adicionar um igual a uma contagem definida para ser contagem mais um. Tudo bem, então acabamos de abstrair essa lógica na parte superior do balcão Tudo bem, agora que criamos essa função de adição de um, podemos simplesmente escrevê-la aqui. Podemos simplesmente escrever adicionar um. Então, nosso clique, na verdade, apenas adicionará. Opa. Então, nosso clique, na verdade, adicionará apenas um quando precisarmos. Incrível. A próxima coisa que podemos fazer aqui é abstrair essa subtração para que fique um pouco mais limpo em nosso código real na parte inferior Então, vamos subtrair um, vamos fazer a contagem de conjuntos menos Vamos guardar isso. E então vamos pegar isso, subtrair um e passá-lo como um clique em nossa função aqui Se tivermos feito isso, e se tivermos feito tudo corretamente, deve funcionar. Então, vamos dar uma olhada. Subtraia um. Incrível. Está funcionando exatamente como esperávamos que pudéssemos. Então, podemos nos livrar desse texto extra aqui. Guarde isso. E agora adicionamos outra camada aos nossos componentes, certo? Então, o que fizemos foi transmitir essas variantes, os estilos e os repassamos ao clicar no botão O botão agora chama dinamicamente a criança. O botão agora chama dinamicamente a variante de estilo e clique conforme necessário E passa a criança correta com base no que passamos. É muito legal. Portanto, essa é uma forma de trabalhar com propriedades de um componente pai, ou seja, do componente contador para um componente filho, que é o componente botão. Então, essa é apenas uma maneira de trabalhar com isso. Então, vamos praticar uma última vez, mas vamos fazer isso com o componente de contagem. Então, isso é bem simples, na verdade. Um pouco mais simples do que o botão em si. Vamos criar um novo arquivo e chamá-lo de “conta”. E vamos fazer a mesma coisa e criar um componente de contagem. O que vamos usar, esse componente de contagem é exatamente para o qual estamos usando o h. Vamos importar a contagem e vamos repassá-la Em vez de usá-la como filha, na verdade vamos apenas passá-la como uma propriedade. Vamos passar na contagem. E então vamos abstrair todo esse estilo do nosso componente aqui Então, vamos nos livrar disso. E economizaremos. E se voltarmos às contagens, agora queremos acessar todas essas propriedades, certo? Então, fazendo a mesma coisa que fizemos no botão, usaremos nossos colchetes aqui e acessaremos o valor da contagem Nós vamos salvar isso. E se você se lembra, claramente, na verdade tínhamos um H em vez de um div aqui para nossa exibição real da contagem em si E o legal do JSX é que realmente não importa qual é o componente externo Pode ser um botão , pode ser, realmente não importa. Pode ser algo chamado até mesmo de fragmento, que é onde você realmente tem apenas esses colchetes vazios que não têm nenhum valor para O que vamos fazer é na verdade, usar aquele H em vez disso. Então, vamos digitar um H, vamos salvá-lo e, em seguida, acessaremos o valor de count. E se você se lembra, também tivemos um pouco de discussão, então vamos copiar colar de volta aqui E agora, se fizemos tudo corretamente, deve parecer exatamente o mesmo, certo? Temos nossa conta e ela está funcionando conforme o esperado. Novamente, isso foi muito simples em termos de apenas passar da contagem Passamos o valor de count para o componente chamado count, acessamos o valor de count e o exibimos. Então, espero que isso ajude você a entender um pouco o fluxo de como o JS funciona, como o react funciona, como os adereços são passados, como funciona o relacionamento entre pais e filhos E, novamente, a razão para fazer isso é apenas tornar as coisas um pouco mais limpas. Algo que poderíamos até mesmo fazer no componente do botão para limpá-lo um pouco é exibir a variante dinamicamente, certo? Em vez de escrever explicitamente a variante aqui no arquivo do contador, que ocupa muito espaço e é algo adicional que devemos lembrar de algo adicional que devemos lembrar mudar toda vez que precisarmos mudar alguma coisa Seria ótimo se todos os nossos estilos vivessem apenas nos componentes dos botões. Vamos ver se podemos fazer isso aqui. O que vamos fazer é, na verdade, entrar em nosso componente de botão e , em vez de acessar essa variante variável, o que vamos fazer é baseá-la no que a criança é. Então, vamos fazer essa pergunta aqui. Então, se as crianças E são iguais a mais um, então esse é o nosso componente de anúncio, certo E, se você se lembrar, nosso componente de anúncio estará no lado esquerdo e será verde. Queremos que nossa variante seja, perguntaremos e queremos que nossa variante seja bem-sucedida. E se você se lembra, isso está usando algo chamado operadores ternários, que examinamos em Javascript, certo Então, estamos fazendo uma pergunta sobre a condição aqui. Então, avalie essa expressão. Se for verdade, resulte neste primeiro argumento aqui. Se for falso, no entanto, resulte no segundo, o que, no nosso caso, é perigoso. Portanto, se tivermos feito isso corretamente, para que essa variante não seja mais usada, ela ainda deverá exibir as cores corretas dos botões. Então, se olharmos aqui, sim, ele ainda está colorido, com as mesmas cores, e está funcionando exatamente como esperado Incrível. Então, novamente, o que fizemos aqui, certo, usamos apenas um operador ternário. Pegamos o valor das crianças, que será mais um ou menos um E fizemos a pergunta, então se a criança for mais uma, se isso for verdade, queremos que ela mostre a cor do sucesso, a variante do sucesso. Se for falso, queremos que mostre o indicador de perigo, que você sabe que é vermelho. E como fizemos isso, não precisamos mais que esse suporte variante seja perfurado O que, na verdade, nos permite limpar nosso código um pouco. Aqui, faz sentido. Vamos usar isso mais uma vez só para ter uma ideia. Então, novamente, aqui no botão personalizado, você vê que temos estilo em um e nenhum estilo no outro. O que podemos fazer novamente no botão é exibir isso com base na variante. E só estamos fazendo isso dessa maneira só porque sabemos que nosso contador não vai mudar muito, certo? Temos um mais um e temos um menos um e isso não vai mudar muito Se isso vai mudar muito no futuro, talvez não queiramos fazer isso dessa maneira. Mas como é um escopo meio limitado, faz sentido para nosso caso de uso. Tudo bem, então vamos usar nosso estilo e adicionar uma margem, à direita, de um ao redor. Eu vou copiar isso. E eu vou removê-lo desse componente externo do contador. Certo? Então, nós já limpamos muito isso. Você sabe, nós temos, na verdade, apenas três linhas aqui e você pode ver o valor de abstrair um pouco do estilo exibido em um componente diferente, quando você vê o quanto mais limpo o componente pai Certo. E, como você pode ver, porque a retiramos, a margem direita não funciona. Não está lá. O que é totalmente bom, porque você vai adicioná-lo novamente. Então, vamos voltar ao botão. Tudo bem, então, e então vamos remover o estilo daqui de cima, porque não vamos precisar dele novamente. Guarde isso. Remova isso aí e salve isso. Tudo bem, agora o que vamos fazer com o estilo aqui é um pouco diferente porque estamos modificando apenas um elemento Vamos verificar isso de uma forma um pouco diferente. Então, vamos digitar a margem, certo? E então dentro da margem, certo? Agora vamos fazer essa pergunta. Se as crianças forem iguais a mais um, queremos que a margem, à direita, Em nenhum outro caso, queremos que a margem, certo, seja zero. Nós vamos salvar isso. Aí está. Agora adicionamos nossa margem, certo, com base no fato de a criança ser ou não a adicionada. Portanto, essa é uma maneira muito fácil limpar nosso contador, nosso componente principal, e manter todos os estilos vivendo em uma área. Certo. Ainda podemos ver que temos a lógica que está sendo tratada no Counter Mas o counterwell agora é aquele componente lógico que contém todo o estado, as chamadas de função que são passadas para os componentes de exibição dos botões de contagem e personalizados. Portanto, os componentes do react também são criados para ter, idealmente, um único uso. Então, eles estão exibindo ou trabalhando na lógica, mas não estão necessariamente fazendo as duas coisas. E esse é um dos motivos pelos quais você pode ser solicitado a fazer isso em uma entrevista ou em um possível cenário de trabalho. 11. Teste: Tudo bem, então a última coisa em que queremos trabalhar hoje é testar. O teste é outro elemento interessante com o React. Como você viu antes, quando estávamos examinando nosso pacote dot json, havia essas coisas que instalamos chamadas bibliotecas de teste, certo? Essas são bibliotecas de teste às quais temos acesso, das quais podemos usar chamadas específicas para realmente garantir que nosso aplicativo esteja funcionando corretamente. Então, se dermos uma olhada nos testes de aplicativos. Então, no momento, está falhando porque, na verdade, removemos parte do que costumava estar no aplicativo Certo. Estava verificando se, bem, vamos examinar isso linha por linha. Nesse teste, importamos duas coisas. A renderização e a tela da biblioteca de testes reagem. Também importamos aplicativo do aplicativo. Agora, o que chamamos então de teste. Estamos fazendo um teste. O teste renderiza um link para aprender a reagir Ele renderiza o aplicativo e, em seguida , encontra um elemento de link. Ele acessa a tela e depois liga para get by text. Ele chama esse método chamado get by text, que nos permite encontrar as palavras react. E você verá que, na verdade, está escrito de forma muito interessante Aqui você notará que ela não está escrita como uma string típica. Se você se lembra, nós meio que tocamos no X vermelho em algum momento, expressões regulares. Você sabe que isso é reg da mesma forma que é escrito de uma forma que nos permite pesquisar essas palavras independentemente de serem maiúsculas ou letras comuns Então você escreve uma barra, você escreve sua frase, você escreve outra barra, e então você escreve um I logo Então, esse é apenas um pequeno fato engraçado que você pode usar a Internet. E então, a forma como o teste funciona é que a etapa final é sempre a afirmação, então o que estamos tentando garantir que está funcionando, está acontecendo, etc Portanto, esperamos que o elemento link, que é essa variável que criamos aqui, esteja no documento. Portanto, esperamos que o elemento de link esteja no documento. Novamente, como eu disse antes, isso está falhando agora porque removemos esse elemento de link do documento Mas podemos realmente corrigir esse teste e fazer com que ele procure outra coisa que esteja no documento, certo? Então, como sabemos que nosso cabeçalho sempre estará no documento, podemos usar esse elemento de link onde podemos usar o mesmo formato para verificar se nosso cabeçalho está presente. Então, vamos mudar o elemento do link para ser contado. E vamos fazer a tela, mas vamos apagar essa parte Vamos fazer com que a tela sobreviva. Queremos fazer isso por meio do papel. E o Get By Role nos permite basicamente encontrar coisas com base na função que elas desempenham. Então, se for um botão, se for um texto, se for um rótulo. Podemos usar essas diferentes funções para identificar os próprios elementos reais. Felizmente, temos apenas um título nesta página, então podemos usar o título get by role Podemos usar isso. Esperamos que a contagem esteja no documento. Como você pode ver, quando o salvamos, ele já funcionou corretamente porque estamos afirmando as coisas corretas Mais um teste que poderíamos fazer. Poderíamos fazer exatamente o mesmo teste, vamos reescrevê-lo. Mas podemos verificar o botão de adição, por exemplo, certo? Nós podemos fazer renderizações. Hum, e também vamos querer alterar o cabeçalho dessa renderização apenas para ficar correto O segundo teste que queremos fazer é o botão Renders Plus. E então podemos simplesmente criar, opa, criar o teste e renderizar o aplicativo. E você sabe, o interessante em que talvez nem tenhamos pensado é o motivo pelo qual isso está funcionando corretamente é porque todos esses componentes residem no aplicativo Porque o aplicativo contém contador e contém contagem e contém botão. Não importa para onde estamos convocando o teste, porque ele pode ver todos eles. Então, só mais uma coisa interessante em que pensar. E então queremos escrever constantemente, o que foi? O botão Plus é igual a tela, obtenha por rolo. Mas agora o interessante é que, na verdade, não temos dois botões. Temos o botão de mais e o de menos. Mas pegamos o botão de rolagem e depois passamos? O que passamos para a segunda parte? Podemos passar mais um? Essa é potencialmente uma maneira de fazer isso. Novamente, como você vê, na verdade não funciona. Agora estamos encontrando vários elementos com o botão de rolagem. Não podemos simplesmente dizer, sim, vamos descobrir o que é. Provavelmente precisamos dar algum tipo de opção aqui. Então, precisamos perguntar , tudo bem, queremos encontrar o botão, mas há outra propriedade chamada nome que nos permite encontrar especificamente o botão que tem qualquer que seja esse nome. Certo? Então, aqui está como eu resolvo o problema. Fizemos a tela, fizemos o get by roll, pesquisamos o botão de rolagem e, em seguida, queremos que o botão com o nome de mais um seja o botão que estamos procurando. Certo? Então é assim que acessamos o botão de adição. Vou te mostrar outro método para fazer isso e podemos procurar o botão de menos Então, dutos mais botão são iguais a isso. Então, queremos ter certeza de que está no documento. Vamos dizer isso, aí está, então sabemos que está realmente funcionando corretamente. Tudo bem, agora vamos escrever mais um teste e vamos verificar o botão de subtração O teste renderiza o botão de subtração. Vamos escrever nosso teste. Faremos a renderização do aplicativo, que subtrai a tela igual ao botão em vez de obter por função Agora vamos usar o get by text. Então, vamos obter por texto e, em seguida, será menos um Nós vamos salvar isso. Em seguida, vamos armazenar a afirmação. Espere que o botão de subtração esteja no documento. Nós chamamos isso. Se tivermos feito isso corretamente, nossos testes são aprovados. Há duas maneiras de realmente procurar um elemento. Quero dizer, existem mais de duas maneiras, mas as duas maneiras que estamos analisando agora são usando get by role e usando get by text. Agora, surpreendentemente, embora obter por texto seja a mais concisa das duas opções, obter por função é, na verdade, preferível porque, por função , você pode ter um pouco mais de certeza de que está recebendo exatamente o que deseja Digamos que tivéssemos um título com a escrita menos um. Esse ponto de tela obtido por texto na verdade, obteria esses dois elementos e acionaria um erro porque obter por texto é literalmente apenas procurar o texto. Get by roll, por outro lado, tem um pouco mais de nuances, um pouco mais especificado. Ao usar o papel do botão, o nome ou outra opção, podemos ter certeza, ou pelo menos com um maior nível de confiança, de que estamos obtendo o elemento correto que estamos procurando 12. Conclusão: Conclusão, falamos muito neste vídeo, desde as origens do React até a criação de seu próprio contador. Eu adoraria ver como você decidiu implementar seu contador. Portanto, deixe um link para seu código ou para o site hospedado na guia Projetos e Recursos para que eu possa ver todo o trabalho árduo que você fez. Eu leio todos os comentários e todas as avaliações e vejo todas as submissões de projetos. Portanto, se você tiver alguma dúvida, sinta-se à vontade para deixar um comentário na seção de avaliações abaixo ou entrar em contato comigo diretamente. Confira minha página de perfil para obter mais informações sobre isso. Se você quiser saber mais sobre programação, confira os outros vídeos que também tenho na minha página de perfil Também tenho vídeos em HTML e CSS disponíveis no meu canal do Youtube e no meu site. Se você estiver interessado em aprendê-las, dê uma olhada e eu verei na próxima.