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:
import { useState } from 'react';
const App() => {
const [age, setAge] = useState(initialState);
// initialState é o valor que a variável age será inicializada
// Poderíamos definir esse initialState como 19, por exemplo, nesse caso,
// age seria inicializada com o valor 19
return(
<>
<p> Your age is {age} </p>
<button onClick = { () => {setAge(nextState)} }> Click here! </button>
</>
);
}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
Was this helpful?