Estados e Hooks
Os estados em React são uma forma de armazenar e gerenciar dados que podem mudar ao longo do tempo em um componente. Eles permitem que você crie componentes dinâmicos que reagem a interações do usuário, atualizações de dados ou outras mudanças.
Um estado é definido dentro de um componente e pode ser inicializado usando o hook useState
. Quando o estado é atualizado, o React re-renderiza o componente, refletindo as mudanças na interface do usuário.
useState
O useState é um hook que permite adicionar uma variável de estado a um componente. De uma maneira mais simples, permite que você crie uma variável que pode ser alterada dinamicamente mesmo após o componente ser renderizado.
Vamos a um exemplo:
Neste exemplo, criamos uma variável age, que contém uma função correspondente chamada setAge. Como o próprio nome indica, essa função é utilizada para alterar (setar) um novo valor a variável age e re-renderizar o componente que contém age
, no caso, App
.
Existe uma convenção na nomenclatura essas variáveis de estado como [something, setSomething]
.
useEffect
O hook useEffect
recebe dois argumentos em sua chamada:
Uma função que será executada;
Array de Dependências (parâmetro opcional): define em qual momento a função será executada;
Esse momento será sempre após uma renderização, ou seja, o React irá executar a função depois de realizar as atualizações no DOM**.**
Caso o array de dependências seja vazio, a função só será executada uma vez, no carregamento da página.
Exemplo:
useContext
O useContext
é um hook que permite que você acesse valores entre componentes sem a necessidade de passar propriedades manualmente em todos os níveis da árvore de componentes.
Nesse exemplo, temos algumas propriedades (props
) definidas no componente main
. Caso queiramos acessá-las em níveis menores, é necessário passarmos por parâmetro em cada chamada dos componentes essas propriedades.
Já nesse exemplo, é criado um Context
que contém os componentes main
, firstChildren
e secondChildren
. As props
que antes eram geradas na main
e passadas uma a uma para os níveis mais baixos na árvore, são "globais” e podem ser acessadas por cada um dos componentes sem a necessidade de passagem por parâmetros.
Para definirmos um contexto, devemos utilizar a função createContext():
useReducer
O hook useReducer permite gerenciar estados complexos. Ele é uma alternativa ao useState quando o estado é um objeto ou quando a lógica de atualização é mais complexa.
Last updated