El hook useState
és un dels hooks més fonamentals i utilitzats en React. Permet afegir estat a components funcionals, una característica que abans només estava disponible en components de classe. En aquesta secció, aprendrem com utilitzar useState
per gestionar l'estat dins dels nostres components funcionals.
Què és useState
?
useState
és una funció que retorna un array amb dos elements:
- L'estat actual: El valor actual de l'estat.
- Una funció per actualitzar l'estat: Una funció que permet modificar l'estat.
Sintaxi
state
: El valor actual de l'estat.setState
: La funció que s'utilitza per actualitzar l'estat.initialState
: El valor inicial de l'estat.
Exemple bàsic
Vegem un exemple bàsic d'un component que utilitza useState
per gestionar un comptador.
Codi
import React, { useState } from 'react'; function Counter() { // Declarem una variable d'estat anomenada "count" i la seva funció d'actualització "setCount" const [count, setCount] = useState(0); return ( <div> <p>Has fet clic {count} vegades</p> <button onClick={() => setCount(count + 1)}> Fes clic </button> </div> ); } export default Counter;
Explicació
- Importació de
useState
: ImportemuseState
des de React. - Declaració de l'estat: Utilitzem
useState
per declarar una variable d'estatcount
inicialitzada a0
i una funciósetCount
per actualitzar aquest estat. - Renderització: Renderitzem un paràgraf que mostra el valor actual de
count
i un botó que, quan es fa clic, incrementa el valor decount
en 1.
Exercici pràctic
Objectiu
Crea un component que permeti a l'usuari introduir text en un camp d'entrada i mostri aquest text en temps real.
Instruccions
- Crea un nou component anomenat
TextInput
. - Utilitza
useState
per gestionar l'estat del text introduït. - Renderitza un camp d'entrada i un paràgraf que mostri el text introduït.
Solució
import React, { useState } from 'react'; function TextInput() { // Declarem una variable d'estat anomenada "text" i la seva funció d'actualització "setText" const [text, setText] = useState(''); return ( <div> <input type="text" value={text} onChange={(e) => setText(e.target.value)} placeholder="Escriu alguna cosa..." /> <p>Has escrit: {text}</p> </div> ); } export default TextInput;
Explicació
- Declaració de l'estat: Utilitzem
useState
per declarar una variable d'estattext
inicialitzada a una cadena buida i una funciósetText
per actualitzar aquest estat. - Camp d'entrada: Renderitzem un camp d'entrada amb el valor lligat a
text
i un controlador d'esdevenimentsonChange
que actualitzatext
amb el valor introduït per l'usuari. - Paràgraf: Renderitzem un paràgraf que mostra el valor actual de
text
.
Errors comuns
- No inicialitzar l'estat: Assegura't de proporcionar un valor inicial a
useState
. - No utilitzar la funció d'actualització correctament: Recorda que
setState
reemplaça l'estat anterior amb el nou valor proporcionat.
Consells addicionals
-
Evita actualitzacions innecessàries: Si l'actualització de l'estat depèn del valor anterior, considera utilitzar la funció de callback de
setState
.setCount(prevCount => prevCount + 1);
-
Gestió de múltiples estats: Pots utilitzar múltiples crides a
useState
per gestionar diferents parts de l'estat dins del mateix component.
Resum
En aquesta secció, hem après com utilitzar el hook useState
per afegir estat als components funcionals de React. Hem vist un exemple bàsic d'un comptador i hem creat un component pràctic que mostra text en temps real. Amb useState
, podem gestionar l'estat de manera senzilla i eficient dins dels nostres components funcionals.
Curs de React
Mòdul 1: Introducció a React
- Què és React?
- Configuració de l'entorn de desenvolupament
- Hola Món en React
- JSX: Extensió de la sintaxi de JavaScript
Mòdul 2: Components de React
- Comprendre els components
- Components funcionals vs components de classe
- Props: Passar dades als components
- State: Gestionar l'estat del component
Mòdul 3: Treballar amb esdeveniments
- Gestionar esdeveniments en React
- Renderització condicional
- Llistes i claus
- Formularis i components controlats
Mòdul 4: Conceptes avançats de components
- Elevar l'estat
- Composició vs herència
- Mètodes del cicle de vida de React
- Hooks: Introducció i ús bàsic
Mòdul 5: Hooks de React
Mòdul 6: Enrutament en React
Mòdul 7: Gestió de l'estat
- Introducció a la gestió de l'estat
- API de context
- Redux: Introducció i configuració
- Redux: Accions i reductors
- Redux: Connexió amb React
Mòdul 8: Optimització del rendiment
- Tècniques d'optimització del rendiment de React
- Memorització amb React.memo
- Hooks useMemo i useCallback
- Divisió de codi i càrrega mandrosa
Mòdul 9: Proves en React
- Introducció a les proves
- Proves unitàries amb Jest
- Proves de components amb React Testing Library
- Proves de punta a punta amb Cypress
Mòdul 10: Temes avançats
- Renderització del costat del servidor (SSR) amb Next.js
- Generació de llocs estàtics (SSG) amb Next.js
- TypeScript amb React
- React Native: Construir aplicacions mòbils