SlideShare a Scribd company logo
1 of 38
React
Instalação e Primeiro Projeto
Bruno Catão
Instalação
• Vamos usar uma ferramenta para gerar a estrutura do projeto:
• Create React App – um toolchain (gerador) da estrutura do projeto
• Instalação: npm i -g create-react-app
• Existem outras opções:
• Next.js – aplicações estáticas ou renderizadas no servidor
• Gatsby – direcionada para aplicações estáticas
• Neutrino – webpack + presets
• nwb – publicação de componentes React para o npm
• Parcel – empacotador (bundler) de aplicações que funciona com React
• Razzle – framework de renderização server-side que funciona com React
Primeiros passos
cd c:PastaOndeFicamSeusProjetos
npm i –g create-react-app
create-react-app app-loja
...
cd app-loja
npm start
Resultado
Entendendo a estrutura do projeto
• index.html
• Template HTML onde todos os componentes serão injetados
• index.js
• Script executado no início da aplicação
• É ele quem vai carregar os componentes e injetar no
template
• App.js / App.css / App.test.js
• Componente de exemplo com sua respectiva folha de estilos
e testes de unidade
• package.json
• Configuração das dependências do projeto
index.html
index.js
Insira o componente App dentro do elemento com id "root"
App.js (modificado)
Hã ?! É isso mesmo, JavaScript misturado com HTML (é JSX)
O HTML fica dentro de parêntesis, e tem que ter só um elemento pai
Resultado
Não precisa ficar parando o servidor e reiniciando.
Na hora que você altera o código, ele recarrega automaticamente.
Nosso primeiro exemplo
• Vamos fazer um protótipo de loja online
• Em React a gente deve pensar nos componentes
• Nossa loja terá:
• uma barra de busca
• uma listagem de produtos
• um carrinho de compras com os produtos selecionados
Mockup
Mockup - Componentes
Loja
BarraDeBusca
ListaDeProdutos
ItemLista
CarrinhoDeCompras
ItemCarrinho
Loja.js
index.js
Passando parâmetros para um componente
• Os parâmetros são chamados de props
• Pare enviar o parâmetro é só:
• <Componente param1="valor" param2="valor" />
• Para acessar os valores dos parâmetros:
• this.props.param1
index.js
Loja.js
Estado de um Componente
• O estado é um objeto
• Guarda os valores de um componente
• Esses valores podem ser exibidos em algum trecho de HTML
• O estado deve ser alterado sempre pela função setState
• Nunca deve ser alterado diretamente !
• Sempre que o estado é alterado, a exibição é atualizada
automaticamente
• Mesmo que o valor tenha sido passado como prop de um
subcomponente
Loja.js
Construtor:
Chama o construtor da superclasse
Define o estado:
Um array de objetos (produtos)
Estilo de Programação React:
Não é hábito usar laços
Ao invés disso, utiliza-se a função map
Resultado
Antes
Depois
E esse bind ?
• JavaScript é uma linguagem funcional
• O valor do this é diferente do de uma
linguagem orientada a objetos
• Em JavaScript o this é referente ao
contexto de quem chama a função
• Ou seja, o this terá os valores locais do
local onde a função for chamada
• E se a gente quiser fixar o valor do this?
• É pra isso que serve o bind, ele fixa o
valor do this
• Nesse caso, o this vai ter os valores
locais do componente loja,
independente de onde as funções
comprar e remover forem chamadas
ListaDeProdutos.js
CarrinhoDeCompras.js
BarraDeBusca.js
Loja.js
Resultado
Com um pouco HTML e CSS (Bootstrap)

More Related Content

What's hot

Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsPatrick Monteiro
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScriptThiago Poiani
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosFabio Moura Pereira
 
Introduction to react native
Introduction to react nativeIntroduction to react native
Introduction to react nativeDani Akash
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
Aula 1. apresentação + frameworks
Aula 1. apresentação + frameworksAula 1. apresentação + frameworks
Aula 1. apresentação + frameworksandreluizlc
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação webCentro Paula Souza
 

What's hot (20)

Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Apresentação angular js
Apresentação angular jsApresentação angular js
Apresentação angular js
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page Applications
 
Introdução React.js
Introdução React.jsIntrodução React.js
Introdução React.js
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScript
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
 
Vue js for beginner
Vue js for beginner Vue js for beginner
Vue js for beginner
 
Introduction to react native
Introduction to react nativeIntroduction to react native
Introduction to react native
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
React Native
React NativeReact Native
React Native
 
Introdução a React Native
Introdução a React NativeIntrodução a React Native
Introdução a React Native
 
React
React React
React
 
React Native
React Native React Native
React Native
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Curso de Desenvolvimento Web - Módulo 02 - CSS
Curso de Desenvolvimento Web - Módulo 02 - CSSCurso de Desenvolvimento Web - Módulo 02 - CSS
Curso de Desenvolvimento Web - Módulo 02 - CSS
 
Aula 1. apresentação + frameworks
Aula 1. apresentação + frameworksAula 1. apresentação + frameworks
Aula 1. apresentação + frameworks
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação web
 
Reactjs
Reactjs Reactjs
Reactjs
 

Similar to React JS - Parte 1

Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Maurício Linhares
 
React JS - Parte 2
React JS - Parte 2React JS - Parte 2
React JS - Parte 2Bruno Catão
 
Projetos reativos com Angular, RxJS e Redux (ngRx)
Projetos reativos com Angular, RxJS e Redux (ngRx)Projetos reativos com Angular, RxJS e Redux (ngRx)
Projetos reativos com Angular, RxJS e Redux (ngRx)Loiane Groner
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e AlémAndre Baltieri
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Android 02 - Recycler View Adapter
Android 02 - Recycler View AdapterAndroid 02 - Recycler View Adapter
Android 02 - Recycler View AdapterAline Borges
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com PrimefacesFabio Noth
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Workshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsWorkshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsFábio Elísio
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - SubalgoritmosCarlos Santos
 
Curso de Ruby on Rails - Aula 02
Curso de Ruby on Rails - Aula 02Curso de Ruby on Rails - Aula 02
Curso de Ruby on Rails - Aula 02Maurício Linhares
 

Similar to React JS - Parte 1 (20)

Começando com React.js
Começando com React.jsComeçando com React.js
Começando com React.js
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01
 
React JS - Parte 2
React JS - Parte 2React JS - Parte 2
React JS - Parte 2
 
Projetos reativos com Angular, RxJS e Redux (ngRx)
Projetos reativos com Angular, RxJS e Redux (ngRx)Projetos reativos com Angular, RxJS e Redux (ngRx)
Projetos reativos com Angular, RxJS e Redux (ngRx)
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e Além
 
React js
React js React js
React js
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
Android 02 - Recycler View Adapter
Android 02 - Recycler View AdapterAndroid 02 - Recycler View Adapter
Android 02 - Recycler View Adapter
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Maven 2
Maven 2Maven 2
Maven 2
 
Workshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsWorkshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.js
 
Palestra parse
Palestra parsePalestra parse
Palestra parse
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
 
Introdução ao vraptor
Introdução ao vraptorIntrodução ao vraptor
Introdução ao vraptor
 
EBAC Django
EBAC DjangoEBAC Django
EBAC Django
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Curso de Ruby on Rails - Aula 02
Curso de Ruby on Rails - Aula 02Curso de Ruby on Rails - Aula 02
Curso de Ruby on Rails - Aula 02
 

More from Bruno Catão

More from Bruno Catão (20)

Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2
 
Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2
 
Node JS - Parte 4
Node JS - Parte 4Node JS - Parte 4
Node JS - Parte 4
 
Node JS - Parte 3
Node JS - Parte 3Node JS - Parte 3
Node JS - Parte 3
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
Retina e Retinose Pigmentar
Retina e Retinose PigmentarRetina e Retinose Pigmentar
Retina e Retinose Pigmentar
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Angular js
Angular jsAngular js
Angular js
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Web Offline
Web OfflineWeb Offline
Web Offline
 
Python 08
Python 08Python 08
Python 08
 
Python 07
Python 07Python 07
Python 07
 
Python 06
Python 06Python 06
Python 06
 
Python 05
Python 05Python 05
Python 05
 
Python 04
Python 04Python 04
Python 04
 
Python 03
Python 03Python 03
Python 03
 
Python 02
Python 02Python 02
Python 02
 
Python 01
Python 01Python 01
Python 01
 

Recently uploaded

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 

Recently uploaded (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 

React JS - Parte 1

  • 1. React Instalação e Primeiro Projeto Bruno Catão
  • 2. Instalação • Vamos usar uma ferramenta para gerar a estrutura do projeto: • Create React App – um toolchain (gerador) da estrutura do projeto • Instalação: npm i -g create-react-app • Existem outras opções: • Next.js – aplicações estáticas ou renderizadas no servidor • Gatsby – direcionada para aplicações estáticas • Neutrino – webpack + presets • nwb – publicação de componentes React para o npm • Parcel – empacotador (bundler) de aplicações que funciona com React • Razzle – framework de renderização server-side que funciona com React
  • 3. Primeiros passos cd c:PastaOndeFicamSeusProjetos npm i –g create-react-app create-react-app app-loja ... cd app-loja npm start
  • 5. Entendendo a estrutura do projeto • index.html • Template HTML onde todos os componentes serão injetados • index.js • Script executado no início da aplicação • É ele quem vai carregar os componentes e injetar no template • App.js / App.css / App.test.js • Componente de exemplo com sua respectiva folha de estilos e testes de unidade • package.json • Configuração das dependências do projeto
  • 7. index.js Insira o componente App dentro do elemento com id "root"
  • 8. App.js (modificado) Hã ?! É isso mesmo, JavaScript misturado com HTML (é JSX) O HTML fica dentro de parêntesis, e tem que ter só um elemento pai
  • 9. Resultado Não precisa ficar parando o servidor e reiniciando. Na hora que você altera o código, ele recarrega automaticamente.
  • 10. Nosso primeiro exemplo • Vamos fazer um protótipo de loja online • Em React a gente deve pensar nos componentes • Nossa loja terá: • uma barra de busca • uma listagem de produtos • um carrinho de compras com os produtos selecionados
  • 15. Passando parâmetros para um componente • Os parâmetros são chamados de props • Pare enviar o parâmetro é só: • <Componente param1="valor" param2="valor" /> • Para acessar os valores dos parâmetros: • this.props.param1
  • 18. Estado de um Componente • O estado é um objeto • Guarda os valores de um componente • Esses valores podem ser exibidos em algum trecho de HTML • O estado deve ser alterado sempre pela função setState • Nunca deve ser alterado diretamente ! • Sempre que o estado é alterado, a exibição é atualizada automaticamente • Mesmo que o valor tenha sido passado como prop de um subcomponente
  • 19. Loja.js Construtor: Chama o construtor da superclasse Define o estado: Um array de objetos (produtos) Estilo de Programação React: Não é hábito usar laços Ao invés disso, utiliza-se a função map
  • 21.
  • 23. E esse bind ? • JavaScript é uma linguagem funcional • O valor do this é diferente do de uma linguagem orientada a objetos • Em JavaScript o this é referente ao contexto de quem chama a função • Ou seja, o this terá os valores locais do local onde a função for chamada • E se a gente quiser fixar o valor do this? • É pra isso que serve o bind, ele fixa o valor do this • Nesse caso, o this vai ter os valores locais do componente loja, independente de onde as funções comprar e remover forem chamadas
  • 24.
  • 26.
  • 27.
  • 29.
  • 30.
  • 32.
  • 34.
  • 35.
  • 36.
  • 38. Com um pouco HTML e CSS (Bootstrap)