Рубрики
Без рубрики

React – Como Iniciar UM Projeto?

🔰 Введите Nesse post vamos criar nossa rimeira aplicação react utilizando o template c … Tagged with JavaScript, React, новички.

🔰 Intervução

Nesse Post Vamos Criar Nossa Primeira Aplicação React utilizando o Шаблон Create-React-App e TypeScript , UM Superset de JavaScript Que Adiciona Tipagem e várias autra funcionalidades mais atuais da linguagem.

📝 Pré-Requisitos

  • Node.js instalado na sua vesão lts.
  • VSCODE OU Qualquer Outro Editor de Código Da Sua Prepetencia.
  • UM Browser Qualquer.

⚠ Учебное пособие Esse foi desenvolvido utilizando o linux, e Office Que algum comando talvez não funcione exatamente no windows ou mac. Nesses Casos, Google é Seu Melhor Amigo.

🔭 conhecendo o projeto

Nós Vamos Criar Um Projeto Chamado de Gofinances, Um Gerenciador de Gastos. NELE VAMOS PODER CADASTRAR SAídas E Entradas de Dinheiro, Alem de Informar A Catchoria Desse Valor.

Algo Básico, Mas um bom projeto para keyçar.

💻 Criando projeto com cra

Primeiramente Escolha Акса -аксес -vose vai trabalhar no seu novo ecesse ele pelo терминал. SE TIVER INTALADO CORRETAMETAMETE O NODE, VOCE TERA ACESSO A UM COMANDO THAMADO npx Анкет Компания ELE ESIVERESAR CODIGOS EXTERS SEM необходим для Baixá-Los E Instalá-Los Em Nossa Máquina.

O comando opploo é:

npx create-react-app go-finances --template=typescript

O Que targina cada parte desse comando:

  • npx IRESA O COMANDO.
  • Создать-реакт-приложение é pacote que será usado para criar o template da nossa aplicação.
  • уход é o nome do projeto.
  • --template = typeScript é Para sobrescrever o Шаблон Падран Пара О Que utiliza O TypeScript.

Após Rodar Esse Comando, O Projeto e Todas suas Devestingências ameçaram A Serem bixadas, E AssiM Que Terminar, Bastar Rodar …

cd go-finances

… Пара -вход на макароны, делая projeto, e …

npm start

… para abrir no seu браузер Падран.

Você deve ver uma tela como essa:

Abrindo o projeto no vscode vamos incontrar uma estrutura como essa:

├── package.json
├── public
│   ├── favicon.ico
│   ├── index.html
│   ├── logo192.png
│   ├── logo512.png
│   ├── manifest.json
│   └── robots.txt
├── README.md
├── src
│   ├── App.css
│   ├── App.test.tsx
│   ├── App.tsx
│   ├── index.css
│   ├── index.tsx
│   ├── logo.svg
│   ├── react-app-env.d.ts
│   ├── reportWebVitals.ts
│   └── setupTests.ts
├── tsconfig.json
└── yarn.lock

Vamos goveCar a Essa estrutura. На паста public Vamos deixar apenas o index.html E favicon.ico Анкет Dentro do index.html Vamos apagar Tudo Que néao é EssentiaRio Por Agora Deixando Apenas:




  
    
    
    
    
    
    Go Finances
  
  
    

Tá Vendo Essa

? É dentro dela que toda nossa aplicação vai ser renderizada pelo React. Enthao ela é bem Нюаааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа

На паста SRC , Vamos deixar App.tsx , index.tsx e React-app-env.d.ts por enquanto e mudando o conteúdo do index.tsx Para:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(
  
    
  ,
  document.getElementById('root')
);

Esse arquivo é A Entrada Da Nossa Aplicação. Нет FIM DO ARQUIVO Dá PrAr Ver Que a Lib Реакт-де renderiza o conteúdo do primeiro parâmetro na

Анкет

Агора О App.tsx :

function App() {
  return (
    

Edite src/App.tsx e salve para recarregar.

Aprenda React
); } export default App;

Se você não cancelou o npm start , Basta Acessar No Seu Browser http://localhost: 3000 E Verá Algo Como Isso:

⚠ Vale ressaltar de que desde a vesãa no React nãa é mais recient o react em cada arquivo. SE VOCE TRABALHANDO EM UM PROJETO EM UMA VERSERODER, EREASTIO ADICIONAR импорт Реагировать из 'React' на Primeira Linha do App.tsx Анкет E não se esqueça do Экспорт по умолчанию nome-do-componente , SEM ELE O Componente, NãO PODERá Ser Amimmentado Em Outro Arquivo.

📦 Компонентизация

Esse é o um dos mais cantceitos do React e você já está utilizando. Tudo na nossa aplicação é Um Componente. O arquivo App.tsx Eo Componente Принципал Десса Апелькасао. O Que define um componente para mim é: “Uma funcáo que quebe parâmetros e retorna um conteúdo jsx”.

OS Parâmetros ficam para o próximo tópico, mas o que é jsx?

Jsx é o html Dentro do JavaScript. Нет nosso caso usando typescript os aquivos que sow componentes temminação *.tsx . Lembrando que todos componentes devemiar com letra maiúscula.

Todo Componente Pode Ser Amitormalado E Utilizado Dentro de Outro Componente, oute mesmo dentro um arquivo normal ts (ou js).

Vamos Criar O Primeiro Componente Que Será O Header (CabeCalho). Primeiro, Dentro Da Pasta SRC , Vamos Criar Uma Pasta Компоненты Onde Ficaram Guardados Todos Nossos Componentes. Criaremos um arquivo assim:

// components/Header.tsx

function Header() {
  return (
    
Go Finance
) } export default Header

E Impormaremos Нет App.tsx :

import Header from "./components/Header";

function App() {
  return (
    
); } export default App;

Agora Com Esse Componente de Header Podemos reutilizá-lo em todas в качестве Telas, E Se Qualquer Mudança для необходимости Basta Alterarar O Componente E A Mudança Será Refletida Em Todas в качестве Теласа.

🔧 Propriedade

Como fazemos para alterar um componente sem ter que mudar o código? E em cada tela diferente quisésemos que o texto dentro. É aí que entra как пропридад.

// components/Header.tsx

type HeaderProps = {
  title?: string
}

function Header(props: HeaderProps) {
  return (
    
{props.title ?? 'Go Finances'}
) } export default Header

Todas As Propriedades de um componentee vem dentro do Argemento реквизит . Já Que estamos utilizando typescript vamos Tipar как пропридад, то Tipo Headerprops Indicando que o objeto реквизит ТЕМ ГЛАВНА заглавие que deve ser uma нить . Para adicionar o Valor no JSX BASTA Colocar A Variavel props.title Entre {} Анкет Caso nada seja passado para essa propriedade o Valor padrão é Go Finances Анкет

Podemos melhorar esse código utilizando de Desestruturação :

// components/Header.tsx

type HeaderProps = {
  title?: string
}

function Header({ title = 'Go Finances' }: HeaderProps) {
  return (
    
{title}
) } export default Header

E Нет App.tsx :

import Header from "./components/Header";

function App() {
  return (
    
); } export default App;

Para passar um valor que não seja string utilizamos {} :

// number


// array


//object


// true

      or


//false

UMA Propriedade Especial que o proprio React adiciona é oe дети Que nada Mais é que o conteúdo de um componentee. Представьте себе Que dentro, заголовок Queremos Passar Também OS ссылки, Como Podemos Fazer Isso?

function App() {
  return (
    
  );
}
// components/Header.tsx

import { ReactNode } from "react"

type HeaderProps = {
  children?: ReactNode
}

function Header({ children } : HeaderProps) {
  return (
    
Go Finances
) }

Vamos voltar o código para como estava Нет FIM Нет TOPICO DE COMPONENTIZICAção.

💡 Estado E Imutabilidade

Vamos criar um novo componente para essa essa explicaço e importionar Нет App.tsx Para ver na tela:

// components/TransactionList.tsx

function TransactionList() {
  return (
    
) } export default TransactionList
import Header from "./components/Header";
import TransactionList from "./components/TransactionList";

function App() {
  return (
    <>
      
); } export default App;

📌 O React não aceita que o возвращаться Tenha mais de um componente diretamente um abaixo do wutro, por isso estamos utilizando o <> POR VOLTA DOS DOIS. ELES SERVEM PARA AGRUPAR OS COMPONENTES SEM TER QUE RENERIZAR Ума

em volta por Пример.

Нет компонента TransactionList.tsx Vamos Salvar Uma Lista Fictícia de transações e tentar renderiza-las em Ума

    :

    // components/TransactionList.tsx
    
    function TransactionList() {
      const transactions = [
        '-R$ 100,00 - Compra de Alimentos - 22/11/2020', 
        '-R$50,00 - Gasolina - 20/12/2020', 
        'R$32,00 - Investimento - 22/12/2020'
      ];
    
      return (
        
      {transactions.map((transaction, i) => (
    • {transaction}
    • ))}
    ) } export default TransactionList

    Criamos inicialmente uma lista de Strings que contém nossas transações. Depois retornamos no componente uma lista (

      ) que renderiza todos как транзакции Através de um карта QUE RETORNA UMA
    • que temo como conteúdo cada item da nossa lista.

      Há Também a Propriedade ключ que recebe um valor único entre os elementos da lista. Como não Temos Essa Valor Ainda, Vamos colocar o Индекс де Када Трансасао.

      A Documentação DIZ:

      Поскольку chaves ajudam o реагирует на идентификационную часть sofreram alterações, foram adicionados ou removidos.

      A chave deve ser colocada no elemento mais “externo” do retorno do карта Анкет Caso você não coloque aparecerá um erro como esse:

      Vamos Agora Criar Um Botão Para adicionar Uma Nova Transação na Lista.

      // components/TransactionList.tsx
      
      function TransactionList() {
        const transactions = [
          '-R$ 100,00 - Compra de Alimentos - 22/11/2020', 
          '-R$50,00 - Gasolina - 20/12/2020', 
          'R$32,00 - Investimento - 22/12/2020'
        ];
      
        function handleAddTransaction() {
          console.log('clicado')
        }
      
        return (
          <>
            
        {transactions.map((transaction, i) => (
      • {transaction}
      • ))}
      ) } export default TransactionList

      Para adicionar uma funcão que é disparada ao clicar Нет Ботаа, Баста Криар Фунсао Эдициона-ла Пропридада Onclick Анкет Teste no seu projeto e veja no console ( ctrl + shift + i ) do Browser se está funcionando.

      SE Mudarmos o Código da Funcão para adicionar Uma nova transação na lista ficaria assim:

      function handleAddTransaction() {
         transactions.push('Nova transação')
      
         console.log(transactions)
       }
      

      Porém se abrirmos nossa aplicação e clicarmos no botão veremos que a tela não é atualizada, mas no console aparece que a lista está getbendo novos.

      Isso acontece porque o React nãa sabe que deve atualizar a tela apenas de mudarmos o Valor da variável транзакции . Temos Que Criar Um Estado Que Guardará a Lista de Transações. Para isso utilizaremos o Hook USESTATE Анкет

      // components/TransactionList.tsx
      
      import { useState } from "react";
      
      function TransactionList() {
        const [transactions, setTransactions] = useState([
          '-R$ 100,00 - Compra de Alimentos - 22/11/2020', 
          '-R$50,00 - Gasolina - 20/12/2020', 
          'R$32,00 - Investimento - 22/12/2020'
        ])
      
        function handleAddTransaction() {
          console.log(transactions)
        }
      
        return (
          <>
            
        {transactions.map((transaction, i) => (
      • {transaction}
      • ))}
      ) } export default TransactionList

      O USESTATE RETORNA UM Array, Sendo A Primeira Posição a Valor Real Do Estado E Como Segunda posição Uma Funcão utilizada para alterar esse estado.

      Como Parâmetro Elece o Valor Inicial Do Estado. Нет Nosso Caso São OS Valores Das Primeiras Transações de Teste.

      Para Alteramos o Valor de транзакции Пассамос o novo Valor Para A Funcáo Settransactions . AI Entra A имутабилидада. Néao Devemos Alterar o Valor Do Estado Diretamente Como Fizemos Aderthmente USANDO Transactions.push ('nova transação') . Devemos criar Uma nova dista de transauses que contenha os valors передние дату a adicionando o novo valor:

      function handleAddTransaction() {
          setTransactions([...transactions, 'Nova Transação'])
      }
      

      Assim deixamos, груз реагирует Alterar O Estado, E Semescentemente Alterar A Tela.

      Утилизамос o USESTATE quando precisamos salvar um valor que será utilizado para alterar a tela ou algum componente. Poderia ser por exemplo o número de notificaçes não lidas pelo usuário, ou o número de likes em foto oute a ae a dista de comentários de uma postagem. Todos Sãao Valors Que, Se Alterados, Devem Alterar o Que o usuário vê.

      😅 Só Isso Tudo?

      É bastante coisa para aprender de Uma Vez. O Que eu anconselho é Esse ese o o próximo turniory você teste algumas das suas ideias utilizando Componentizicação , Propriedade e Эстадо . Talvez Criar UM Pequeno intador que diminui e aumente o Valor Probodo Poriedade … Бем Сан -Инфинитас возможностей.

      SE для Seguir Meu Conselho Tente Algo Simples, nada de tentar keecar com a proxima ideia revolucionaria de uma nova empresa do elon musk.

      Bem … Por Enquanto, Isso é tudo Pessoal!

      Нет PRóximo post vamos iniciar de verdade nosso projeto já estilizando aplicação.

      PS: UM Agradecimento Especial💜 oo pessoal da RocketSeat 🚀 Pelo Conteúdo de Qualidade Em React.

      Оригинал: “https://dev.to/brunolipea/react-como-iniciar-um-projeto-5ekd”