1. ¿Por qué React?
Imagina Facebook. Miles de comentarios, likes actualizándose, notificaciones... Si
hiciéramos esto con JS normal (Vanilla), el código sería un espagueti imposible de mantener.
React (creada por Facebook en 2013) cambia el juego. En lugar de manipular el DOM
manualmente ("busca el botón y cámbiale el color"), tú defines ESTADOS ("el
botón está activo") y React se encarga de pintar la pantalla automáticamente.
Es Declarativo, no Imperativo.
2. Componentes: Legos de UI
En React, todo es un componente. Un botón es un componente. El menú es un componente.
Son funciones de JS que retornan HTML (JSX).
Regla de Oro: Los componentes siempre empiezan con Mayúscula (ej.
boton ❌, Boton ✅).
Evaluación 1: Filosofía
¿Cuál es la principal ventaja de los componentes?
3. JSX: HTML en tu JS
React usa una sintaxis llamada **JSX**. Parece HTML, pero vive dentro de JavaScript.
function Tarjeta() {
const titulo = "Hola React";
return (
<div className="card">
<h1>{titulo}</h1>
<p>Esto es JSX</p>
</div>
);
}
Nota: Usamos `className`, no `class` (porque `class` es una palabra reservada en JS). Las llaves
`{}` nos permiten inyectar lógica de JS directamente.
4. Props: Pasando datos
¿Cómo le paso información de un padre a un hijo? Con **Props** (Propiedades).
function Saludo(props) {
return <h1>Hola, {props.nombre}</h1>;
}
// Uso
<Saludo nombre="Cristian" />
<Saludo nombre="Ana" />
Es como pasar argumentos a una función. El componente `Saludo` es el mismo, pero muestra datos
diferentes.
5. State (Estado): El corazón de React
Las props son de solo lectura. Si quieres que algo CAMBIE (interactividad), necesitas
**Estado**.
Usamos el hook `useState`.
import { useState } from 'react';
function Contador() {
// [valorActual, funcionParaCambiarlo]
const [cuenta, setCuenta] = useState(0);
return (
<button onClick={() => setCuenta(cuenta + 1)}>
Clicks: {cuenta}
</button>
);
}
Cuando llamas a `setCuenta`, React detecta el cambio y **re-renderiza** solo esa parte de la
pantalla. Magia.
Evaluación 2: Estado
¿Puedo modificar una variable de estado directamente (ej: `cuenta = 5`)?
6. El Virtual DOM
El DOM real es lento. React crea una copia en memoria (Virtual DOM).
Cuando cambias algo, React compara la copia nueva con la vieja ("Diffing"), calcula lo
mínimo necesario que debe cambiar, y actualiza el DOM real de golpe.
Es como editar un borrador y luego pasar a limpio solo los párrafos que cambiaste, en lugar
de reescribir todo el libro.
7. useEffect: Efectos Secundarios
¿Necesitas pedir datos a una API cuando carga la página?
import { useEffect } from 'react';
useEffect(() => {
// Código que corre al montar el componente
fetch('/api/datos').then(...);
}, []); // El array vacío [] significa "Solo una vez al inicio"
Es el reemplazo moderno de `componentDidMount`.
8. Listas y Keys
Para mostrar listas usamos `.map()`.
const frutas = ['Manzana', 'Pera'];
return (
<ul>
{frutas.map((fruta, index) => (
<li key={index}>{fruta}</li>
))}
</ul>
);
La `key` es vital. Ayuda a React a identificar qué ítem cambió, se agregó o se eliminó para
optimizar el renderizado.
Evaluación 3: Listas
¿Qué pasa si olvido poner la propiedad `key` en una lista?
9. Inputs y Formularios
En HTML, el input guarda su propio valor. En React, queremos que el ESTADO sea la única fuente de la verdad (Controlled Components).
const [texto, setTexto] = useState("");
<input
value={texto}
onChange={(e) => setTexto(e.target.value)}
/>
Así, React controla exáctamente qué hay en el input en cada milisegundo.
10. Hooks Personalizados
¿Tienes lógica que repites mucho? (ej: conectar a un chat).
Puedes crear tus propios Hooks: `useChat()`, `useForm()`.
Esto es el nivel experto de encapsulación. Separas la lógica de la UI completamente.
11. El Futuro (Next.js)
React es una librería de UI. Para crear apps completas con SEO, rutas y backend, hoy en día
usamos "Meta-Frameworks" como Next.js.
Next.js está construido sobre React, pero le añade superpoderes de producción.
¡Dominas el Frontend Moderno!
Entender el flujo de datos unidireccional (Props hacia abajo, Eventos hacia arriba) es la
clave de React.
Con Node y React, eres un Full Stack Developer. Puedes crear Ubers, Airbnbs
o Facebooks. El límite es tu imaginación (y el tiempo).