Skip to content

1. Introducción a React

⚛️ 1.1 ¿Qué es React y cuál es su propósito?

Section titled “⚛️ 1.1 ¿Qué es React y cuál es su propósito?”

React es una biblioteca de JavaScript creada por Facebook (Meta) para construir interfaces de usuario. Su enfoque principal es crear componentes reutilizables que manejan su propio estado.

CaracterísticaDescripción
CreadorFacebook (Meta)
Año2013
TipoBiblioteca (no framework)
EnfoqueInterfaces de usuario
ParadigmaBasado en componentes

React fue diseñado para resolver problemas específicos del desarrollo web moderno:

  • Crear interfaces dinámicas que responden a cambios de datos
  • Reutilizar código mediante componentes
  • Mejorar el rendimiento con actualizaciones eficientes del DOM
  • Simplificar el desarrollo de aplicaciones complejas
Componente simple en React
// Ejemplo básico de React
function Saludo() {
return <h1>¡Hola, mundo!</h1>;
}
// Este componente puede reutilizarse en cualquier parte
<Saludo />
<Saludo />
<Saludo />

Sin React, actualizar la interfaz requería manipular el DOM directamente:

JavaScript tradicional
// Sin React - Manipulación directa del DOM
const boton = document.getElementById('contador');
let contador = 0;
boton.addEventListener('click', () => {
contador++;
document.getElementById('valor').textContent = contador;
// Hay que actualizar manualmente cada elemento
});

React sincroniza automáticamente la interfaz con los datos:

React - Actualización automática
// Con React - Declarativo y automático
import { useState } from 'react';
function Contador() {
const [contador, setContador] = useState(0);
return (
<div>
<p>Valor: {contador}</p>
<button onClick={() => setContador(contador + 1)}>
Incrementar
</button>
</div>
);
}
// React actualiza automáticamente la UI cuando cambia el estado
ProblemaSolución de React
Código repetitivoComponentes reutilizables
Sincronización UI-datosEstado reactivo automático
DOM lentoVirtual DOM optimizado
Código difícil de mantenerEstructura por componentes
Actualizaciones manualesRenderizado declarativo

🌐 1.3 Concepto de SPA (Single Page Application)

Section titled “🌐 1.3 Concepto de SPA (Single Page Application)”

Una Single Page Application (Aplicación de Página Única) es una aplicación web que carga una sola página HTML y actualiza dinámicamente el contenido sin recargar la página completa.

Diferencia entre SPA y aplicación tradicional

Section titled “Diferencia entre SPA y aplicación tradicional”
AspectoTradicionalSPA
NavegaciónRecarga página completaActualiza solo el contenido
VelocidadMás lentaMás rápida
ExperienciaInterrumpidaFluida
ServidorGenera HTMLEnvía datos (JSON)
Flujo de navegación
// Aplicación tradicional
Usuario hace clic → Servidor genera nueva página → Navegador recarga todo
// SPA con React
Usuario hace clic → React actualiza componente → Solo cambia lo necesario
  • Experiencia fluida: Sin recargas de página
  • Menor consumo de datos: Solo se transfieren datos, no HTML completo
  • Mejor rendimiento: Actualizaciones parciales
  • Interactividad: Respuesta inmediata a acciones del usuario
Navegación en SPA
// Ejemplo de navegación en SPA
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
<nav>
<Link to="/">Inicio</Link>
<Link to="/productos">Productos</Link>
<Link to="/contacto">Contacto</Link>
</nav>
<Routes>
<Route path="/" element={<Inicio />} />
<Route path="/productos" element={<Productos />} />
<Route path="/contacto" element={<Contacto />} />
</Routes>
</BrowserRouter>
);
}
// La navegación es instantánea, sin recargar la página

⚡ 1.4 Virtual DOM y cómo mejora el rendimiento

Section titled “⚡ 1.4 Virtual DOM y cómo mejora el rendimiento”

El DOM (Document Object Model) es la representación en memoria de la estructura HTML de una página. Manipularlo directamente es costoso en rendimiento.

El Virtual DOM es una copia ligera del DOM real que React mantiene en memoria. Cuando hay cambios, React:

  1. Actualiza el Virtual DOM (rápido)
  2. Compara con la versión anterior (diffing)
  3. Aplica solo los cambios necesarios al DOM real
Proceso de reconciliación
// Proceso del Virtual DOM
// 1. Estado inicial
const estadoAnterior = {
titulo: "Hola",
contador: 0
};
// 2. Nuevo estado
const estadoNuevo = {
titulo: "Hola", // Sin cambios
contador: 1 // Cambió
};
// 3. React detecta que solo cambió "contador"
// 4. Solo actualiza ese elemento en el DOM real
OperaciónDOM RealVirtual DOM
Actualizar 1 elementoLentoRápido
Actualizar 100 elementosMuy lentoRápido (batch)
Comparar cambiosNo disponibleAutomático
Re-renderizadoCompletoSolo lo necesario

📚 1.5 Diferencias entre librería y framework

Section titled “📚 1.5 Diferencias entre librería y framework”
AspectoLibrería (React)Framework (Angular)
ControlTú controlas el flujoEl framework controla
FlexibilidadAlta, eliges herramientasMenor, viene todo incluido
Curva de aprendizajeGradualMás pronunciada
TamañoPequeño (~40KB)Grande (~500KB+)
OpiniónPocas reglasMuchas convenciones
React - Tú eliges las herramientas
// React (librería) - Solo la vista
import React from 'react';
function App() {
return <h1>Hola</h1>;
}
// Para routing, necesitas agregar: react-router-dom
// Para estado global, necesitas agregar: redux, zustand, etc.
// Para formularios, necesitas agregar: react-hook-form
// Tú decides qué usar
Angular - Todo viene incluido
// Angular (framework) - Todo incluido
import { Component } from '@angular/core';
import { RouterModule } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
// Angular incluye routing, formularios, HTTP, etc.
// Debes seguir su estructura y convenciones
  • Libertad de elección: Usas solo lo que necesitas
  • Fácil de integrar: Puedes agregarlo a proyectos existentes
  • Comunidad activa: Miles de librerías compatibles
  • Aprendizaje gradual: Empiezas simple, agregas complejidad

🛠️ 1.6 Ecosistema de herramientas en React

Section titled “🛠️ 1.6 Ecosistema de herramientas en React”
HerramientaPropósito
ViteCrear y ejecutar proyectos React
React RouterNavegación entre páginas
Axios / FetchConsumo de APIs
React Hook FormManejo de formularios
Zustand / ReduxEstado global
Tailwind CSSEstilos
HerramientaPropósito
React DevToolsExtensión del navegador para depurar
ESLintDetectar errores de código
PrettierFormatear código
TypeScriptTipado estático
Dependencias típicas de un proyecto React
// package.json - Dependencias comunes
{
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.0.0",
"axios": "^1.6.0",
"zustand": "^4.0.0"
},
"devDependencies": {
"vite": "^5.0.0",
"@vitejs/plugin-react": "^4.0.0",
"eslint": "^8.0.0",
"tailwindcss": "^3.0.0"
}
}

🐝