Semestre 1, 2025
Biblioteca de JavaScript para construir interfaces de usuario interactivas.
Desarrollado por Meta (anteriormente Facebook).
Permite crear aplicaciones rápidas, escalables y mantenibles.
No es un framework, no influye en la arquitectura.
No gestiona directamente el backend.
No es un lenguaje de programación, sino una biblioteca.
Creado en 2013 por Jordan Walke en Meta.
Usado inicialmente en el news feed de Facebook.
Se volvió open source y su adopción creció rápidamente.
Creación de SPAs (Single Page Applications).
Usado por grandes empresas como Facebook, Instagram, Netflix.
Enfocado en la reutilización de componentes.
Unidad de código reutilizable que provee una interfaz de usuario.
Permiten dividir la interfaz en pequeñas partes independientes.
Anidación de componentes.
Definidos como funciones de JavaScript.
Sintaxis más simple y directa.
Utilizan Hooks para manejar el estado y el ciclo de vida.
Devuelven JSX para renderizar la interfaz.
function Saludo() {
return <h1>¡Hola, Mundo!</h1>;
}
Reciben propiedades (props) como entrada y retornan los elementos que se van a mostrar.
El ecosistema de React está migrando hacia componentes funcionales debido a su eficiencia y simplicidad.
Clases que extienden a la React.Component class utilizando la sintaxis de clases de ES6.
Para mostrar el contenido tienen una función render que retorna el elemento que se va a mostrar.
class Saludo extends React.Component {
render() {
return <h1>¡Hola, Mundo!</h1>;
}
}
Las props (propiedades) son datos que los componentes padres pasan a los componentes hijos.
Se accede a ellas mediante el argumento de la función.
function Saludo(props) {
return <h1>¡Hola, {props.nombre}!</h1>;
}
function App() {
return <Saludo nombre="Juan" />;
}
class Saludo extends React.Component {
render() {
return <h1>¡Hola, {this.props.nombre}!</h1>;
}
}
Si se llama el componente así:
<Saludo nombre="Juan" />
El resultado será:
¡Hola, Juan!
JSX (JavaScript XML) es una extensión de la sintaxis de JavaScript que permite escribir estructuras similares a HTML dentro del código JS.
Es más legible que simplemente crear los elementos en el DOM.
function Saludo() {
const nombre = "Juan";
return <h1>Hola, {nombre}!</h1>;
}
El contenido dentro de las llaves {}
se interpreta como JavaScript.
Trnaspilar: combinación de las palabras transformation y compiling. Es el proceso de convertir de un lenguaje de alto nivel (jsx) a otro lenguaje de alto nivel (javascript)
El navegador no entiende JSX directamente.
JSX se convierte a JavaScript puro mediante herramientas como Babel.
React.createElement('h1', null, 'Hola, Mundo!');
El código transpilado puede ser más extenso, pero garantiza compatibilidad.
Aunque JSX se parece a HTML, tiene diferencias clave:
className
en lugar de class
.Babel es un transpilador de JavaScript que permite usar características modernas del lenguaje en navegadores antiguos.
Babel toma el código JSX y lo convierte en llamadas a React.createElement().
// Código JSX
const elemento = <h1>¡Hola!</h1>;
// Código convertido por Babel
const elemento = React.createElement('h1', null, '¡Hola!');
El Virtual DOM es una representación ligera del DOM real en memoria.
Se utiliza en React para optimizar el proceso de actualizar la interfaz de usuario.
A diferencia del DOM, el VDOM trabaja desde la memoria por lo que es más rápido y menos pesado.
Es una “copia” en la que todos los cambios que se den primero se reflejan en este y luego se pasan al DOM.
Cuando el estado de un componente cambia:
Es la forma en la que se le pueden definir clases a los componentes usando JSX. Su funcionalidad es igual a la del atributo class de HTML.
function Saludo(props) {
return <h1 className="textoRojo">Hola {props.nombre}</h1>;
}
Los Hooks son funciones que permiten usar estado y otras características de React sin escribir componentes de clase.
El estado hace referencia a la data que un componente maneja dentro de si mismo.
Introducidos en React 16.8 para facilitar el manejo del estado y el ciclo de vida en componentes funcionales.
Gracias a los Hooks, los componentes funcionales ahora pueden ser tan poderosos como los de clase.
Permite declarar variables de estado en un componente funcional.
const [contador, setContador] = useState(0);
contador
: valor del estado.setContador
: función para actualizar ese estado.En el ejemplo anterior se está modificando el estado de la variable contador utilizando el método setContador y su valor inicial es de 0 ya que lo definimos en nuestro useState(0)
setContador
, actualiza el valor y vuelve a renderizar el componente.Permite ejecutar efectos secundarios en componentes funcionales.
Se utiliza para tareas como peticiones a APIs, suscripciones, temporizadores, y manipulación del DOM.
Realizar tareas que se salen del alcance (scope) del componente en el que se está trabajando.
useEffect(() => {
// lógica del efecto
}, []);
useEffect(() => {
console.log('El componente se montó');
}, []);
El efecto se ejecuta solo una vez.
useEffect(() => {
console.log('El contador cambió');
}, [contador]);
El efecto se ejecuta cada vez que contador
cambia.
[]
, el efecto solo corre una vez.