SlideShare uma empresa Scribd logo
React Hooks
#OnTheRoadCuritiba #BrazilJS
● Desenvolvedor Web há 10 anos;
● Membro ativo da comunidade oficial do
React no github;
● Membro do time de plataforma e Tech
Lead na Conta Azul;
● Graduado em Análise e Desenvolvimento
de Sistema;
● Apaixonado por um bom e velho Rock;
● Sou movido a cafeína;
Jhon Mike
Github: https://github.com/jhonmike
Twitter: https://twitter.com/JhonMikeSoares
Linkedin: https://www.linkedin.com/in/jhonmike/
Hooks no React
É uma nova feature disponível desde a v16.8,
lançada dia 6 de fevereiro de 2019.
Hooks permite que usemos estado e outros
recursos do React sem escrever componentes
com classes.
Exemplo:
Sem breaking changes
Hooks são
retrocompatíveis
É difícil reutilizar comportamentos entre
componentes, precisamos utilizar soluções
como render props ou higher-order
components (Componentes de alta ordem)
Motivação
Com hooks conseguimos
extrair a lógica com estado
de um componente,
podendo testar e
compartilhar esses hooks se
necessário.
Assim evitamos mudar a
hierarquia de nossos
componentes.
É um componente que
recebe uma função que
retorna um outro
componente que é chamado
no momento da
renderização.
Render props
Exemplo de render props
É uma técnica avançada do React
para reutilizar a lógica de um
componente.
Seria uma função que recebe um
componente existente e retorna
um outro componente,
envolvendo-o e atribuindo-lhe
novas funcionalidades.
Higher-order component
Exemplo de higher-order component
Exemplo com hooks
Componentes complexos se tornam difíceis de
entender
Motivação
Frequentemente nossos
componentes começam simples e
com o tempo se tornam
componentes gigantes com lógica
de estado e side-effects como:
chamadas de API, tarefas
assíncronas, modificações na
DOM, etc.
E existem casos que não
conseguimos quebrar esses
componentes.
Classes confundem tanto pessoas quanto
máquinas
Motivação
Classes apresentam problemas
para ferramentas dos dias de hoje,
por exemplo, classes não
minificam muito bem e elas fazem
com que o hot reloading funcione
de forma inconsistente e não
confiável.
Hooks Básicos
● useState
● useEffect
● useContext
Hooks
Hooks Adicionais
● useReducer
● useCallback
● useMemo
● useRef
● useImperativeHandle
● useLayoutEffect
● useDebugValue
useState
Conseguimos declarar uma variável state em
um componente de função.
useState vs State na classe
Permite executar side-effects em
componentes de função.
useEffect
useEffect vs side effects nas classes
Regras dos Hooks
Use Hooks apenas no Nível
Superior
Não use Hooks dentro de loops,
regras condicionais ou funções
aninhadas.
Use Hooks apenas dentro de
funções do React
Não use Hooks dentro de funções
JavaScript comuns.
Criar nossos próprios Hooks
permite extrairmos a lógica de um
componente em funções
reutilizáveis.
Custom Hooks
O custom Hook não precisa ter
uma assinatura específica.
Podemos decidir que argumentos
receber e o que ele retorna.
obs.: Seu nome deve sempre
começar com use para facilitar o
uso de linters e deve seguir as
regras dos Hooks.
Custom Hooks
Para efetuar testes com hooks é o
mesmo teste de um componente
"tradicional".
Com a função act, podemos deixar
a execução do componente no
teste o mais próximo do que
acontece no browser.
Testando Hooks
- Escrever componentes de forma mais simples e legível.
- Não precisamos refatorar todo nosso código, podemos migrar
gradualmente ou manter seu app tanto com classes quanto hooks.
- Hooks não acabou com o redux, inclusive podemos usá-los juntos.
Eles vieram para ajudar
Fontes
https://pt-br.reactjs.org/docs
https://blog.rocketseat.com.br/react-hooks/
https://dev.to/exodevhub/react-hooks-making-it-easier-to-compose-reuse-an
d-share-react-code-5he9
https://overreacted.io/pt-br/a-complete-guide-to-useeffect/
https://contaazul.com/carreiras/
Temos Vagas

Mais conteúdo relacionado

Mais procurados

Gwt
GwtGwt
Aplicando patches de correção no Magento 2 com composer
Aplicando patches de correção no Magento 2 com composerAplicando patches de correção no Magento 2 com composer
Aplicando patches de correção no Magento 2 com composer
Bruno Roeder
 
Indo para as nuvens mais rápido e fácil com Docker
Indo para as nuvens mais rápido e fácil com DockerIndo para as nuvens mais rápido e fácil com Docker
Indo para as nuvens mais rápido e fácil com Docker
Luan Cestari
 
Gutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fasesGutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fases
Guga Alves
 
Git e Github para Iniciantes
Git e Github para IniciantesGit e Github para Iniciantes
Git e Github para Iniciantes
Loiane Groner
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScript
tdc-globalcode
 

Mais procurados (6)

Gwt
GwtGwt
Gwt
 
Aplicando patches de correção no Magento 2 com composer
Aplicando patches de correção no Magento 2 com composerAplicando patches de correção no Magento 2 com composer
Aplicando patches de correção no Magento 2 com composer
 
Indo para as nuvens mais rápido e fácil com Docker
Indo para as nuvens mais rápido e fácil com DockerIndo para as nuvens mais rápido e fácil com Docker
Indo para as nuvens mais rápido e fácil com Docker
 
Gutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fasesGutenberg: O que esperar das próximas fases
Gutenberg: O que esperar das próximas fases
 
Git e Github para Iniciantes
Git e Github para IniciantesGit e Github para Iniciantes
Git e Github para Iniciantes
 
TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScript
 

Semelhante a React Hooks

Hooks em React: o novo jeito de fazer componentes funcionais
Hooks em React: o novo jeito de fazer componentes funcionaisHooks em React: o novo jeito de fazer componentes funcionais
Hooks em React: o novo jeito de fazer componentes funcionais
GDGFoz
 
Workshop React Hooks
Workshop React HooksWorkshop React Hooks
Workshop React Hooks
Dan Vitoriano
 
Padrões de Projeto para Jogos
Padrões de Projeto para JogosPadrões de Projeto para Jogos
Padrões de Projeto para Jogos
Robson de Negreiros
 
Hello ReactJs
Hello ReactJsHello ReactJs
Hello ReactJs
Nathália Lourenção
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
Gustavo Lopes
 
Começando com React.js
Começando com React.jsComeçando com React.js
Começando com React.js
João Pedro Benedetti Misturini
 
Introdução ao vraptor
Introdução ao vraptorIntrodução ao vraptor
Introdução ao vraptor
Vitor Zachi Junior
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
Fernando Camargo
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
AndreCosta502039
 
435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdf435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdf
Julia469065
 
Intodução ao React
Intodução ao ReactIntodução ao React
Intodução ao React
Dev PP
 
Angular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativoAngular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativo
GDGFoz
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
jmtofoli
 
Vraptor 3
Vraptor 3Vraptor 3
Vraptor 3
Cristiano Agosti
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
Ruben Marcus Luz Paschoarelli
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & Vue
Herbert Henrique
 
Strategy pattern
Strategy patternStrategy pattern
Strategy pattern
Daniel Rodrigues Lima
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhos
Felipe Gadelha Ruoso
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
Diego Pacheco
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
Renato Groff
 

Semelhante a React Hooks (20)

Hooks em React: o novo jeito de fazer componentes funcionais
Hooks em React: o novo jeito de fazer componentes funcionaisHooks em React: o novo jeito de fazer componentes funcionais
Hooks em React: o novo jeito de fazer componentes funcionais
 
Workshop React Hooks
Workshop React HooksWorkshop React Hooks
Workshop React Hooks
 
Padrões de Projeto para Jogos
Padrões de Projeto para JogosPadrões de Projeto para Jogos
Padrões de Projeto para Jogos
 
Hello ReactJs
Hello ReactJsHello ReactJs
Hello ReactJs
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Começando com React.js
Começando com React.jsComeçando com React.js
Começando com React.js
 
Introdução ao vraptor
Introdução ao vraptorIntrodução ao vraptor
Introdução ao vraptor
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdf435142330-Guia-Completo-React-Js.pdf
435142330-Guia-Completo-React-Js.pdf
 
Intodução ao React
Intodução ao ReactIntodução ao React
Intodução ao React
 
Angular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativoAngular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativo
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Vraptor 3
Vraptor 3Vraptor 3
Vraptor 3
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Comparando as Hypes - React & Vue
Comparando as Hypes - React & VueComparando as Hypes - React & Vue
Comparando as Hypes - React & Vue
 
Strategy pattern
Strategy patternStrategy pattern
Strategy pattern
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhos
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 

React Hooks