
React
Conceitos
&
Componentes

POO
Componentes
Props
Herança e Hierarquia
State
Component Lifecycle
DOM & Virtual DOM
POO
Props
Herança e Hierarquia
State
Component Lifecycle
DOM & Virtual DOM
UI
Pedaço
Pedaço
Pedaço
Componente
Componente
Componente
Independentes
Reutilizáveis
Isolados
Componentes
Funções
Conceitualmente
Estruturalmente
Objetos
Pais e Filhos
Herança
Composição
Propriedades
Características
Métodos
Ações
Lifecycle
POO
Props
Herança e Hierarquia
State
Component Lifecycle
DOM & Virtual DOM
Componentes
P
O
O
rogramação
rientada a
bjetos
Paradigma
Visão
Estruturação
Execução
Estruturado
Dados 'globais'
Procedimentos
POO
Objetos
Propriedades
Métodos
C
Java
JS
C#
SmallTalk
4 Pilares
Abstração
Encapsulamento
Poliformismo
Herança
Abstração
Transformar aspectos da vida real em objetos
Animal
nome
altura
largura
cor
espécie
...
altura
largura
cor
espécie
...
Classes
"Moldes"
Definem as propriedades e métodos dos objetos
class Animal {
}
constructor(nome){
}
this.nome = nome;
const meuAnimal = new Animal("rex");
console.log(meuAnimal.nome);
// "Não Faca Isso"
Encapsulamento
O que está dentro do objeto só pode ser acessado por ele
O objeto só pode acessar o que está dentro dele
class Animal {
}
constructor(nome){
}
this.nome = nome;
const meuAnimal = new Animal("Rex");
getNome(){
}
return this.nome;
setNome(novoNome){
}
this.nome = novoNome;
console.log(meuAnimal.getNome());
// "Rex"
meuAnimal.setNome("Fofucho")
console.log(meuAnimal.getNome());
// "Fofucho"
Cachorro
É um Animal
fala
rola
Herança
Objetos Pais passam propriedades e métodos para Objetos Filhos
Objetos Filhos herdam propriedades e métodos
class Cachorro {
constructor(nome){
}
}
extends Animal
super(nome);
falar() {
console.log("Au Au")
}
rolar() {
console.log("*rolando*")
}
const meuCachorro = new Cachorro("Rex");
console.log(meuCachorro.getNome());
// "Rex"
meuCachorro.falar();
// "Au Au"
Gato
É um Animal
raça
fala
class Gato {
constructor(nome, raca){
}
}
extends Animal
super(nome);
falar() {
console.log("Miau")
}
const meuGato = new Gato("Mingau", "Siames");
console.log(meuGato.getRaca());
// "Siames"
meuGato.falar();
// "Miau"
this.raca = raca;
getRaca() {
return this.raca
}
Animal
nome
getNome()
setNome()
Cachorro
Gato
nome
getNome()
setNome()
nome
getNome()
setNome()
falar()
rolar()
raca
getRaca()
falar()
POO
Props
Herança e Hierarquia
State
Component Lifecycle
DOM & Virtual DOM
Componentes
Componentes
Pai
Filho
Filho
Filho
Pai
C-1
C-2
C-3
C-4
C-0
filho
filhos
Herança
<div>
<HeaderComponent />
<NavBar />
<FooterComponent />
</div>
<div>
<NavIcon />
<NavIcon />
<NavIcon />
<NavIcon />
</div>
App {
HeaderComponent
NavBar {
NavIcon
NavIcon
NavIcon
}
FooterComponent
}
App.js
NavBar.js
Estrutura
Composição
Herança
=/=
Componentes compõem ou são compostos por outros componentes
Stateful Components herdam de React.Component
Como os elementos Pai passam atributos para elementos Filhos?
POO
Props
Herança e Hierarquia
State
Component Lifecycle
DOM & Virtual DOM
Componentes
Props
NavBar.js
render(){
return(
<div>
<NavIcon nome="Google" link="www.google.com"/>
<NavIcon nome="Face" link="www.fb.com"/>
</div>
);
}
NavIcon.js
class NavIcon extends Component {
render(){
}
}
return(
<div>
<a href={this.props.link}>{this.props.name}</a>
</div>
);
1° NavIcon:
this.props = {
name: "Google",
link: "www.google.com"
}
this.props = {
name: "Face",
link: "www.facebook.com"
}
2° NavIcon:
class NavIcon extends Component {
render(){
return(
<div>
<a href={this.props.link}>{this.props.name}</a>
</div>
);
}
}
const navIcon = (props) => {
}
Stateful
Stateless
return(
<div>
<a href={props.link}>{props.name}</a>
</div>
);
Stateful Components são instancias de React.Component
Stateless são funções e recebem props como argumento
POO
Props
Herança e Hierarquia
State
Component Lifecycle
DOM & Virtual DOM
Componentes
Props X State
Props
Dados passados por Componentes Pais
State
Dados próprios que podem mudar com o decorrer da aplicação
State é um Objeto
Encapsulamento
Imutabilidade
Apenas o Componente tem acesso a seu State
States só devem ser alterados com setState()
class MeuComponente extends Component {
}
state = {
}
meuCampo: 'umValor',
outroCampo: 'outroValor',
this.setState(
);
{
meuCampo: 'umValorDiferente'
}
state = {
}
meuCampo:
'umValor'
outroCampo:
'outroValor'
'umValorDiferente'
console.log(this.state.outroCampo);
... seu Componente
atualiza
Sempre que seu State
muda ...
POO
Props
Herança e Hierarquia
State
Component Lifecycle
DOM & Virtual DOM
Componentes
LifeCycle
Inicialização
Atualização
Destruição
Updating
UnMounting
Mounting
Inicialização
getDefaultProps
getInitialState
componentWillMount
render
componentDidMount
getDefaultProps
getInitialState
componentWillMount
render
Atualização
shouldComponentUpdate
componentWillUpdate
render
componentDidUpdate
shouldComponentUpdate
componentWillUpdate
render
Destruição
componentWillUnmount
POO
Props
Herança e Hierarquia
State
Component Lifecycle
DOM & Virtual DOM
Componentes
D
O
M
ocument
bject
odel
Representação
Acesso
Manipulação

Virtual DOM
Representação da UI
guardada na memória
Declarativo
ReactDOM



WorkShop React - 03 - Conceitos & Components
By João Batista
WorkShop React - 03 - Conceitos & Components
- 79