¿Qué es React?
Una página con un botón que cuenta clics necesita mantener el número sincronizado con cada clic. En JavaScript puro, agarras el nodo de texto del botón, añades un listener de clic, y actualizas el número manualmente cada vez que alguien hace clic. Suma un filtro de búsqueda, un total del carrito de compras, y un modal que se abre y cierra, y de repente tienes un montón de actualizaciones manuales esparcidas por el código, cada una un lugar donde un bug puede colarse cuando los datos cambian en otro lado de la página.
React es una librería de JavaScript para construir interfaces de usuario a partir de componentes, y se encarga de ese trabajo manual por ti. Este capítulo explora qué significa eso en la práctica: la idea fundamental detrás de React, dónde se ejecuta, y cómo encaja en la pregunta de librería versus framework que surge temprano para la mayoría de la gente que la aprende.
Componentes y la idea fundamental
Acá está ese mismo contador de clics escrito como un componente de React:
import { useState } from 'react'
function Counter() {
const [count, setCount] = useState(0)
return (
<button onClick={() => setCount(count + 1)}>
Clicked {count} times
</button>
)
}Este ejemplo usa algunas cosas que no has visto todavía: el marcado dentro de return es JSX, useState es un hook, y onClick es un manejador de eventos. Los capítulos Componentes y JSX cubren ese marcado, Estado cubre useState completamente, y Eventos cubre onClick, así que toma la sintaxis como dada por ahora y sigue la forma de la idea en cambio.
count es el estado. El JSX retornado por Counter describe qué debe mostrar el botón para ese estado. Hacer clic en el botón llama a setCount, que actualiza count, y React re-renderiza el botón para que coincida. Nunca tocas el texto del botón directamente. Lo describes de nuevo para el nuevo valor, y React trabaja para determinar qué cambió en la página.
Esa es la idea fundamental que está bajo cada componente de React: describes la UI como una función de tus datos, normalmente llamada estado, y React se encarga de actualizar el DOM para que coincida. Un componente es una función que retorna un pedazo de UI, y una app es un árbol de componentes combinados juntos, todos funcionando de la misma manera que el contador de arriba.
Dónde se ejecuta React
React se ejecuta principalmente en el navegador, renderizando componentes al DOM. Ese es el entorno en el que este handbook se mantiene a lo largo.
El modelo de componentes de React no está atado específicamente al DOM, sin embargo. Otros renderers enchufan el mismo modelo en diferentes objetivos. El ejemplo más conocido es React Native, que usa los componentes de React y el modelo de estado para manejar interfaces móviles nativas en lugar de una página web. Se menciona aquí para que el nombre no sea una sorpresa después. Enseñarlo está fuera del alcance de este handbook.
¿Librería o framework?
React renderiza UI. No incluye enrutamiento, no decide cómo cargas datos, y no maneja server rendering. Esas son elecciones que haces tú mismo, frecuentemente alcanzando otra herramienta junto con él. Esa es la razón práctica por la que React cuenta como una librería en lugar de un framework completo: hace un trabajo bien y deja el resto a ti, en lugar de poseer toda la app como lo hace un framework.
Los tipos de frameworks cubre esta distinción completa, incluyendo dónde se sienta React junto a algo como Next.js, que sí añade las piezas faltantes.
Dónde se ejecuta, en el navegador o en algo como React Native, es un detalle para después. El hábito es lo que importa ahora.
Siguiente: Historia y versiones, que cubre cómo React llegó aquí y qué cambió de release en release.

