useState
O hook useState
é um dos hooks mais utilizados no dia-a-dia. Ele é o responsável por amazenar um determinado estado em uma "variável" fazendo uso de uma função.
Exemplo:
function NoOneComponent() { const [belt, setBelt] = useState('black'); const [age, setAge] = useState(33); const [cartShop, setCartShop] = useState('item-00'); function addToCartShop() { setCartShop(prev => prev + ' item-01'); } return ( <div> Belt color: <strong>{belt}</strong> - Age: <i>{age}</i> <br /> <h3>{cartShop}</h3> <button onClick={addToCartShop}>Add to cart</button> </div> ); }
Dessa forma posso utilizar a variável belt
para armazenar os valores que desejo, podem ser strings, objetos, arrays, funções, boolean, null, undefined, qualquer tipo de valor que eu possa atribuir a uma variãvel JavaScript.
A forma de atualizar a variável belt não é através de uma atribuilção normal, como belt = "blue"
, mas através uma chamada de função, neste caso utilizando o método setBelt
.
O prefixo set
é somente uma convenção, é uma forma de visualmente sabermos que é para setar (atribuir) um valor à variável de nome posterior, no caso belt
.
Posso usar outra forma? Sim, funciona. Mas é importante não fugir deste modelo porque qualquer projeto que você encontre que utilize um hook useState que pregue esse formato vai ser fácil de trabalhar e entender. Outros modelos podem causar confusão.
Sendo assim, o hook useState possui a seguinte formação:
const [var, fun] = useState(initialValue)
É importante ressaltar que o initialValue não é obrigatório e caso não seja informato ele é iniciado como undefined
. Declarar um formato inicial ou não vai de acordo com a necessidade.
Importante, caso a página possua vários useState disparando renders encadeadamente é altamente recomendado utilizar outra abordagem para controlar o estado. Uma das alternativas é o uso do hook useReducer