Estado Local en React: Uso de useState para Contadores
Clase 4 de 24 • Curso de React.js
Resumen
El estado en React es un concepto fundamental que permite a los desarrolladores almacenar y manipular información dentro de sus aplicaciones. A través del uso de estados locales, podemos crear componentes dinámicos que responden a las interacciones del usuario y actualizan la interfaz de manera eficiente. Dominar el manejo de estados es esencial para cualquier desarrollador que busque crear aplicaciones React robustas y reactivas.
¿Qué es el estado en React y por qué es importante?
El estado en React es un mecanismo para almacenar información que puede cambiar durante el ciclo de vida de un componente. Podemos visualizarlo como cajas de almacenamiento donde guardamos datos específicos que nuestros componentes necesitan para funcionar correctamente.
Existen dos tipos principales de estados:
- Estado local: Información almacenada a nivel de componente, accesible solo dentro del componente donde se define.
- Estado global: Información compartida entre múltiples componentes de la aplicación.
En esta ocasión, nos enfocaremos en el estado local, que nos permite mantener información dentro de un componente específico y actualizarla según sea necesario.
El hook useState: la herramienta para manejar estados locales
React proporciona una herramienta especial llamada useState, que es un hook que nos permite implementar estados locales en nuestros componentes funcionales. Este hook nos devuelve:
- Una variable para leer el valor actual del estado
- Una función para actualizar ese valor
La sintaxis básica es:
const [valor, setValor] = useState(valorInicial);
Donde:
valor
es la variable que contiene el estado actualsetValor
es la función que nos permite actualizar ese estadovalorInicial
es el valor con el que comienza nuestro estado
¿Cómo crear un contador utilizando estados en React?
Vamos a crear un ejemplo práctico: un contador que nos permita incrementar y decrementar un valor utilizando estados locales.
Configuración del proyecto
Primero, creamos un nuevo proyecto de React:
npm create vite@latest myreact-app-state
Seleccionamos React como framework y JavaScript como variante. Luego instalamos las dependencias:
cd myreact-app-state
npm install
npm run dev
Creando nuestro componente contador
Dentro de nuestro proyecto, creamos una carpeta llamada components
y dentro de ella un archivo Counter.jsx
:
import { useState } from 'react';
const Counter = () => {
const [count, setCount] = useState(0);
return (
<div>
<h2>El contador está en: {count}</h2>
<button onClick={() => setCount(count + 1)}>Incrementar</button>
<button onClick={() => setCount(count - 1)}>Decrementar</button>
</div>
);
};
export default Counter;
En este componente:
- Importamos el hook
useState
desde React - Creamos un estado local llamado
count
con valor inicial de 0 - Renderizamos el valor actual del contador
- Añadimos dos botones que modifican el estado al hacer clic
Implementando el contador en nuestra aplicación
Ahora, modificamos nuestro archivo principal App.jsx
para incluir nuestro componente contador:
import Counter from './components/Counter';
function App() {
return (
<div>
<Counter />
</div>
);
}
export default App;
Al ejecutar nuestra aplicación, veremos un contador que comienza en 0 y que podemos incrementar o decrementar con los botones correspondientes.
Entendiendo el flujo de actualización del estado
Cuando hacemos clic en el botón "Incrementar", ocurre lo siguiente:
- Se ejecuta la función
setCount(count + 1)
- React actualiza el valor de
count
sumándole 1 - El componente se vuelve a renderizar con el nuevo valor
- La interfaz se actualiza mostrando el nuevo valor del contador
Este proceso es automático y es parte de la magia de React: cuando el estado cambia, los componentes que dependen de ese estado se actualizan automáticamente.
¿En qué otros casos podemos utilizar estados locales?
Los estados locales son extremadamente versátiles y pueden utilizarse en numerosos escenarios:
- Formularios: Para almacenar los valores de los campos mientras el usuario los completa
- Toggles: Para manejar estados de activado/desactivado (como menús desplegables)
- Filtros: Para almacenar criterios de filtrado en listas o colecciones
- Paginación: Para mantener el número de página actual
- Cargas de datos: Para indicar si los datos están cargando, se han cargado correctamente o ha ocurrido un error
El manejo de estados es una habilidad fundamental en React que te permitirá crear interfaces dinámicas y reactivas. Dominar el uso de useState es solo el primer paso para aprovechar todo el potencial que React ofrece para el manejo de datos en tus aplicaciones.
¿Has pensado en otras aplicaciones prácticas para los estados locales en tus proyectos? ¿Quizás un carrito de compras, un sistema de notificaciones o un reproductor multimedia? Comparte tus ideas y experiencias en los comentarios.