Skip to content

Get the full experience in the app More learning modes, track your progress, detailed topics

Start Now

Guía Completa de React.js

Domina React.js desde los fundamentos hasta patrones avanzados. Construye aplicaciones web modernas con componentes, hooks, gestión de estado y mejores prácticas.

Intermediate
19 modules
600 min
4.7

Overview

Domina React.js desde los fundamentos hasta patrones avanzados. Construye aplicaciones web modernas con componentes, hooks, gestión de estado y mejores prácticas.

What you'll learn

  • Build React applications from scratch
  • Understand and use React hooks effectively
  • Manage complex application state
  • Implement routing and navigation
  • Apply React best practices and patterns

Course Modules

19 modules
1

Introducción a React

Qué es React, por qué usarlo y configurando tu primer proyecto.

Key Concepts
React Componente DOM Virtual JSX Vite

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar React
  • Definir y explicar Componente
  • Definir y explicar DOM Virtual
  • Definir y explicar JSX
  • Definir y explicar Vite
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

React es una biblioteca de JavaScript para construir interfaces de usuario, creada por Facebook en 2013. Revolucionó el desarrollo web con su arquitectura basada en componentes y DOM virtual. React te permite construir UIs complejas desde piezas pequeñas y reutilizables llamadas componentes. Hoy, React impulsa millones de sitios web incluyendo Facebook, Instagram, Netflix y Airbnb. Su ecosistema incluye React Native para aplicaciones móviles. Inicia un nuevo proyecto con Create React App o Vite: npm create vite@latest my-app -- --template react. Entender React abre puertas al desarrollo frontend moderno.

En este módulo, exploraremos el fascinante mundo de Introducción a React. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


React

¿Qué es React?

Definición: Biblioteca de JavaScript para construir interfaces de usuario

Cuando los expertos estudian react, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender react nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: React es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Componente

¿Qué es Componente?

Definición: Pieza reutilizable de UI con su propia lógica y apariencia

El concepto de componente ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre componente, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre componente cada día.

Punto Clave: Componente es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


DOM Virtual

¿Qué es DOM Virtual?

Definición: Representación en memoria del DOM real para actualizaciones eficientes

Para apreciar completamente dom virtual, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de dom virtual en diferentes contextos a tu alrededor.

Punto Clave: DOM Virtual es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


JSX

¿Qué es JSX?

Definición: Extensión de sintaxis que permite código similar a HTML en JavaScript

Comprender jsx nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de jsx para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: JSX es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Vite

¿Qué es Vite?

Definición: Herramienta de construcción rápida para proyectos web modernos

El estudio de vite revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Vite es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: React vs Otros Frameworks

React difiere de Angular y Vue en formas importantes. React es una biblioteca, no un framework completo—se enfoca en la capa de vista y te permite elegir otras herramientas. React usa JSX, una extensión de sintaxis que parece HTML en JavaScript. Su DOM virtual actualiza eficientemente solo lo que cambia. El flujo de datos unidireccional de React hace las aplicaciones predecibles. La gran comunidad significa recursos extensos y bibliotecas de terceros. Las empresas eligen React por su flexibilidad, rendimiento y la capacidad de contratar de un gran grupo de desarrolladores.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡React se desplegó primero en el News Feed de Facebook en 2011, dos años antes de ser open source. Instagram fue reconstruido usando React justo antes de que Facebook lo adquiriera!


Conceptos Clave de un Vistazo

Concepto Definición
React Biblioteca de JavaScript para construir interfaces de usuario
Componente Pieza reutilizable de UI con su propia lógica y apariencia
DOM Virtual Representación en memoria del DOM real para actualizaciones eficientes
JSX Extensión de sintaxis que permite código similar a HTML en JavaScript
Vite Herramienta de construcción rápida para proyectos web modernos

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa React y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa Componente y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa DOM Virtual y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa JSX y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa Vite y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos Introducción a React. Aprendimos sobre react, componente, dom virtual, jsx, vite. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

2

JSX y Renderizado

Escribiendo JSX y entendiendo cómo React renderiza elementos.

Key Concepts
JSX Llaves Fragmento Renderizado Condicional Prop Key

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar JSX
  • Definir y explicar Llaves
  • Definir y explicar Fragmento
  • Definir y explicar Renderizado Condicional
  • Definir y explicar Prop Key
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

JSX es una extensión de sintaxis que te permite escribir código similar a HTML en JavaScript. Internamente, JSX compila a llamadas React.createElement(). JSX parece HTML pero tiene diferencias clave: usa className en lugar de class, usa camelCase para atributos (onClick, tabIndex), y cierra automáticamente todas las etiquetas. Incrusta expresiones JavaScript en llaves: {variable}. El renderizado condicional usa operadores ternarios o && para casos simples. React renderiza JSX al DOM a través de ReactDOM.createRoot(). Entender JSX es fundamental para escribir código React.

En este módulo, exploraremos el fascinante mundo de JSX y Renderizado. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


JSX

¿Qué es JSX?

Definición: Sintaxis XML de JavaScript para escribir elementos de UI

Cuando los expertos estudian jsx, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender jsx nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: JSX es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Llaves

¿Qué es Llaves?

Definición: Sintaxis para incrustar expresiones JavaScript en JSX

El concepto de llaves ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre llaves, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre llaves cada día.

Punto Clave: Llaves es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Fragmento

¿Qué es Fragmento?

Definición: Envoltorio vacío <></> para agrupar elementos sin agregar nodos DOM

Para apreciar completamente fragmento, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de fragmento en diferentes contextos a tu alrededor.

Punto Clave: Fragmento es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Renderizado Condicional

¿Qué es Renderizado Condicional?

Definición: Mostrando diferente UI basada en condiciones

Comprender renderizado condicional nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de renderizado condicional para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: Renderizado Condicional es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Prop Key

¿Qué es Prop Key?

Definición: Identificador único para elementos de lista para ayudar a React a rastrear cambios

El estudio de prop key revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Prop Key es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Mejores Prácticas de JSX

Escribe JSX más limpio con estas prácticas: mantén los componentes pequeños y enfocados, usa fragmentos <></> para evitar divs extra, extrae lógica compleja a variables antes de la declaración return. Para renderizado condicional, prefiere {condicion && } para casos simples y ternario para uno u otro. Mapea arrays con .map() y siempre incluye keys únicas. Propaga props con {...props} para reenviar. Evita funciones inline en JSX cuando sea posible por rendimiento. JSX bien estructurado mejora la legibilidad y mantenibilidad.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡JSX fue controversial cuando React se lanzó—muchos desarrolladores odiaban mezclar HTML con JavaScript. Ahora es amado e inspiró sintaxis similar en otros frameworks!


Conceptos Clave de un Vistazo

Concepto Definición
JSX Sintaxis XML de JavaScript para escribir elementos de UI
Llaves Sintaxis para incrustar expresiones JavaScript en JSX
Fragmento Envoltorio vacío <></> para agrupar elementos sin agregar nodos DOM
Renderizado Condicional Mostrando diferente UI basada en condiciones
Prop Key Identificador único para elementos de lista para ayudar a React a rastrear cambios

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa JSX y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa Llaves y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa Fragmento y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa Renderizado Condicional y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa Prop Key y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos JSX y Renderizado. Aprendimos sobre jsx, llaves, fragmento, renderizado condicional, prop key. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

3

Componentes y Props

Construyendo componentes reutilizables y pasando datos con props.

Key Concepts
Componente de Función Props Prop children Desestructuración Flujo de Datos Unidireccional

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar Componente de Función
  • Definir y explicar Props
  • Definir y explicar Prop children
  • Definir y explicar Desestructuración
  • Definir y explicar Flujo de Datos Unidireccional
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

Los componentes son los bloques de construcción de las aplicaciones React. Los componentes de función son funciones JavaScript que devuelven JSX: function Button() { return ; }. Los props (propiedades) pasan datos de componentes padre a hijo: ; }. Los props son de solo lectura—los componentes nunca deben modificar sus propios props. Este flujo de datos unidireccional hace las aplicaciones React predecibles y más fáciles de depurar.

En este módulo, exploraremos el fascinante mundo de Componentes y Props. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


Componente de Función

¿Qué es Componente de Función?

Definición: Componente definido como una función JavaScript que devuelve JSX

Cuando los expertos estudian componente de función, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender componente de función nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: Componente de Función es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Props

¿Qué es Props?

Definición: Datos de solo lectura pasados de componente padre a hijo

El concepto de props ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre props, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre props cada día.

Punto Clave: Props es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Prop children

¿Qué es Prop children?

Definición: Prop especial que contiene elementos anidados

Para apreciar completamente prop children, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de prop children en diferentes contextos a tu alrededor.

Punto Clave: Prop children es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Desestructuración

¿Qué es Desestructuración?

Definición: Extrayendo props directamente en parámetros de función

Comprender desestructuración nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de desestructuración para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: Desestructuración es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Flujo de Datos Unidireccional

¿Qué es Flujo de Datos Unidireccional?

Definición: Los datos fluyen de padre a hijo, nunca al revés

El estudio de flujo de datos unidireccional revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Flujo de Datos Unidireccional es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Patrones de Componentes

Los patrones comunes de componentes mejoran la organización del código. Los componentes contenedor manejan lógica y estado; los componentes presentacionales se enfocan en la UI. Los componentes compuestos trabajan juntos como ; inputRef.current.focus(). También almacena cualquier valor mutable: estado anterior, temporizadores, o cualquier valor que necesites persistir sin activar re-renderizado. A diferencia del estado, cambiar ref.current no causa re-renderizado. Los refs son la salida de escape cuando necesitas manipulación directa del DOM o valores fuera del ciclo de renderizado de React.

En este módulo, exploraremos el fascinante mundo de useRef y Acceso al DOM. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


useRef

¿Qué es useRef?

Definición: Hook que crea una referencia mutable que persiste a través de renderizados

Cuando los expertos estudian useref, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender useref nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: useRef es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


ref.current

¿Qué es ref.current?

Definición: Propiedad que contiene el valor actual o elemento DOM

El concepto de ref.current ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre ref.current, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre ref.current cada día.

Punto Clave: ref.current es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


forwardRef

¿Qué es forwardRef?

Definición: Función para pasar refs a componentes hijos

Para apreciar completamente forwardref, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de forwardref en diferentes contextos a tu alrededor.

Punto Clave: forwardRef es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Manipulación del DOM

¿Qué es Manipulación del DOM?

Definición: Accediendo y modificando directamente elementos DOM

Comprender manipulación del dom nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de manipulación del dom para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: Manipulación del DOM es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


useImperativeHandle

¿Qué es useImperativeHandle?

Definición: Hook para personalizar el valor del ref expuesto al padre

El estudio de useimperativehandle revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: useImperativeHandle es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: forwardRef para Refs de Componentes

Para pasar refs a componentes hijos, usa forwardRef: const Input = forwardRef((props, ref) => <input ref={ref} {...props} />). Esto permite a los componentes padre acceder al elemento DOM del hijo. useImperativeHandle personaliza lo que se expone: useImperativeHandle(ref, () => ({ focus: () => inputRef.current.focus() })). Esto es útil para bibliotecas de componentes donde quieres exponer métodos específicos. Sin embargo, prefiere patrones React declarativos sobre manipulación imperativa de refs cuando sea posible.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡Los refs se usan comúnmente para integrar con bibliotecas no React que necesitan acceso directo al DOM, como D3.js para visualización de datos o Three.js para gráficos 3D!


Conceptos Clave de un Vistazo

Concepto Definición
useRef Hook que crea una referencia mutable que persiste a través de renderizados
ref.current Propiedad que contiene el valor actual o elemento DOM
forwardRef Función para pasar refs a componentes hijos
Manipulación del DOM Accediendo y modificando directamente elementos DOM
useImperativeHandle Hook para personalizar el valor del ref expuesto al padre

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa useRef y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa ref.current y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa forwardRef y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa Manipulación del DOM y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa useImperativeHandle y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos useRef y Acceso al DOM. Aprendimos sobre useref, ref.current, forwardref, manipulación del dom, useimperativehandle. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

8

API de Contexto para Compartir Estado

Compartiendo estado entre componentes sin pasar props por niveles.

Key Concepts
Contexto createContext Provider useContext Prop Drilling

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar Contexto
  • Definir y explicar createContext
  • Definir y explicar Provider
  • Definir y explicar useContext
  • Definir y explicar Prop Drilling
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

El contexto resuelve el "prop drilling"—pasar props a través de muchos niveles de componentes. Crea contexto: const ThemeContext = createContext('light'). Provee valor: <ThemeContext.Provider value={theme}>. Consume con useContext: const theme = useContext(ThemeContext). El contexto es ideal para datos globales: tema, locale, autenticación de usuario. Sin embargo, el contexto re-renderiza todos los consumidores cuando el valor cambia—úsalo sabiamente. Para estado complejo, combina con useReducer o considera bibliotecas de gestión de estado. El contexto es poderoso pero debe complementar, no reemplazar, los props para la mayoría del paso de datos.

En este módulo, exploraremos el fascinante mundo de API de Contexto para Compartir Estado. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


Contexto

¿Qué es Contexto?

Definición: Forma de pasar datos a través del árbol de componentes sin props

Cuando los expertos estudian contexto, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender contexto nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: Contexto es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


createContext

¿Qué es createContext?

Definición: Función para crear un nuevo objeto de contexto

El concepto de createcontext ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre createcontext, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre createcontext cada día.

Punto Clave: createContext es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Provider

¿Qué es Provider?

Definición: Componente que suministra valor de contexto a descendientes

Para apreciar completamente provider, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de provider en diferentes contextos a tu alrededor.

Punto Clave: Provider es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


useContext

¿Qué es useContext?

Definición: Hook para consumir valor de contexto

Comprender usecontext nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de usecontext para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: useContext es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Prop Drilling

¿Qué es Prop Drilling?

Definición: Pasar props a través de muchos niveles innecesariamente

El estudio de prop drilling revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Prop Drilling es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Patrones de Contexto

Optimiza el uso de contexto con estos patrones: Divide contextos por frecuencia de actualización—el tema raramente cambia, los datos de usuario más frecuentemente. Memoriza valores del provider: value={useMemo(() => ({state, dispatch}), [state])}. Crea hooks personalizados: function useTheme() { return useContext(ThemeContext); }. Ubica el provider cerca de los consumidores para limitar re-renderizados. Para acciones, pasa dispatch separadamente o usa un contexto que contenga funciones. Considera bibliotecas como Zustand o Jotai para estado complejo con mejor rendimiento que el contexto puro.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡El contexto existía en React antes de los hooks! La API antigua usaba render props: <ThemeContext.Consumer>{theme =>

{theme}
}</ThemeContext.Consumer>—los hooks lo hicieron mucho más limpio.


Conceptos Clave de un Vistazo

Concepto Definición
Contexto Forma de pasar datos a través del árbol de componentes sin props
createContext Función para crear un nuevo objeto de contexto
Provider Componente que suministra valor de contexto a descendientes
useContext Hook para consumir valor de contexto
Prop Drilling Pasar props a través de muchos niveles innecesariamente

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa Contexto y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa createContext y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa Provider y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa useContext y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa Prop Drilling y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos API de Contexto para Compartir Estado. Aprendimos sobre contexto, createcontext, provider, usecontext, prop drilling. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

9

useReducer para Estado Complejo

Gestionando lógica de estado compleja con reducers.

Key Concepts
useReducer Reducer dispatch Acción Payload

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar useReducer
  • Definir y explicar Reducer
  • Definir y explicar dispatch
  • Definir y explicar Acción
  • Definir y explicar Payload
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

useReducer es una alternativa a useState para lógica de estado compleja. Usa el patrón reducer: const [state, dispatch] = useReducer(reducer, estadoInicial). La función reducer toma estado y acción, devuelve nuevo estado: function reducer(state, action) { switch(action.type) { case 'INCREMENT': return {...state, count: state.count + 1}; } }. Despacha acciones para actualizar: dispatch({type: 'INCREMENT'}). useReducer es preferible cuando la lógica de estado es compleja, las actualizaciones dependen del estado anterior, o las acciones tienen múltiples efectos.

En este módulo, exploraremos el fascinante mundo de useReducer para Estado Complejo. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


useReducer

¿Qué es useReducer?

Definición: Hook para gestionar estado complejo con un reducer

Cuando los expertos estudian usereducer, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender usereducer nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: useReducer es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Reducer

¿Qué es Reducer?

Definición: Función pura que toma estado y acción, devuelve nuevo estado

El concepto de reducer ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre reducer, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre reducer cada día.

Punto Clave: Reducer es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


dispatch

¿Qué es dispatch?

Definición: Función para enviar acciones al reducer

Para apreciar completamente dispatch, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de dispatch en diferentes contextos a tu alrededor.

Punto Clave: dispatch es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Acción

¿Qué es Acción?

Definición: Objeto que describe qué pasó, típicamente con propiedad type

Comprender acción nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de acción para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: Acción es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Payload

¿Qué es Payload?

Definición: Datos transportados por una acción

El estudio de payload revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Payload es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Mejores Prácticas de Reducers

Escribe reducers efectivos con estas prácticas: Mantén los reducers puros—sin efectos secundarios, la misma entrada siempre produce la misma salida. Usa tipos de acción como constantes para prevenir errores tipográficos. Incluye payload en acciones para datos: {type: 'SET_USER', payload: usuario}. Maneja acciones desconocidas con caso default devolviendo el estado actual. Usa la biblioteca Immer para escribir código "mutante" que produce actualizaciones inmutables. Combina useReducer con Context para estado a nivel de app. TypeScript mejora los reducers con acciones y estado tipados.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡useReducer está inspirado en Redux, la biblioteca de gestión de estado más popular. El creador de Redux, Dan Abramov, en realidad se unió al equipo de React y ayudó a diseñar los hooks!


Conceptos Clave de un Vistazo

Concepto Definición
useReducer Hook para gestionar estado complejo con un reducer
Reducer Función pura que toma estado y acción, devuelve nuevo estado
dispatch Función para enviar acciones al reducer
Acción Objeto que describe qué pasó, típicamente con propiedad type
Payload Datos transportados por una acción

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa useReducer y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa Reducer y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa dispatch y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa Acción y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa Payload y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos useReducer para Estado Complejo. Aprendimos sobre usereducer, reducer, dispatch, acción, payload. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

10

Hooks Personalizados

Creando lógica de hooks reutilizable.

Key Concepts
Hook Personalizado Extracción de Lógica useDebounce useFetch Composición

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar Hook Personalizado
  • Definir y explicar Extracción de Lógica
  • Definir y explicar useDebounce
  • Definir y explicar useFetch
  • Definir y explicar Composición
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

Los hooks personalizados te permiten extraer y reutilizar lógica con estado. Un hook personalizado es una función que empieza con "use" y llama a otros hooks. Ejemplo: function useLocalStorage(key, valorInicial) { const [value, setValue] = useState(() => localStorage.getItem(key) || valorInicial); useEffect(() => { localStorage.setItem(key, value); }, [key, value]); return [value, setValue]; }. Los hooks personalizados comparten lógica, no estado—cada componente usando el hook obtiene su propio estado. Este patrón es fundamental para código React limpio y reutilizable.

En este módulo, exploraremos el fascinante mundo de Hooks Personalizados. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


Hook Personalizado

¿Qué es Hook Personalizado?

Definición: Función reutilizable que encapsula lógica de hooks

Cuando los expertos estudian hook personalizado, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender hook personalizado nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: Hook Personalizado es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Extracción de Lógica

¿Qué es Extracción de Lógica?

Definición: Moviendo lógica con estado fuera de componentes a hooks

El concepto de extracción de lógica ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre extracción de lógica, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre extracción de lógica cada día.

Punto Clave: Extracción de Lógica es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


useDebounce

¿Qué es useDebounce?

Definición: Hook que retrasa la actualización de un valor

Para apreciar completamente usedebounce, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de usedebounce en diferentes contextos a tu alrededor.

Punto Clave: useDebounce es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


useFetch

¿Qué es useFetch?

Definición: Hook para obtención de datos con estados

Comprender usefetch nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de usefetch para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: useFetch es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Composición

¿Qué es Composición?

Definición: Construyendo hooks complejos desde otros más simples

El estudio de composición revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Composición es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Patrones Populares de Hooks Personalizados

Los hooks personalizados comunes incluyen: useDebounce para debouncing de valores, useFetch para obtención de datos con estados de carga/error, useOnClickOutside para detectar clics fuera de elementos, useMediaQuery para diseño responsivo, usePrevious para rastrear valores anteriores, y useToggle para estado booleano. Bibliotecas como react-use y ahooks proporcionan muchos hooks listos para usar. Al crear hooks, devuelve arrays para valores simples (como useState) y objetos para múltiples valores. Documenta bien tus hooks para reutilización del equipo.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡El prefijo "use" no es solo convención—React lo usa para verificar reglas de hooks en tiempo de desarrollo. Si nombras una función "useXxx", React sabe que debe seguir las reglas de hooks!


Conceptos Clave de un Vistazo

Concepto Definición
Hook Personalizado Función reutilizable que encapsula lógica de hooks
Extracción de Lógica Moviendo lógica con estado fuera de componentes a hooks
useDebounce Hook que retrasa la actualización de un valor
useFetch Hook para obtención de datos con estados
Composición Construyendo hooks complejos desde otros más simples

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa Hook Personalizado y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa Extracción de Lógica y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa useDebounce y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa useFetch y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa Composición y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos Hooks Personalizados. Aprendimos sobre hook personalizado, extracción de lógica, usedebounce, usefetch, composición. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

11

React Router para Navegación

Enrutamiento del lado del cliente para aplicaciones de una sola página.

Key Concepts
React Router Ruta Link useParams useNavigate

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar React Router
  • Definir y explicar Ruta
  • Definir y explicar Link
  • Definir y explicar useParams
  • Definir y explicar useNavigate
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

React Router habilita navegación en aplicaciones de una sola página sin recargas completas de página. Instala: npm install react-router-dom. Envuelve tu app con BrowserRouter. Define rutas con componentes Routes y Route: <Route path="/" element={} /><Route path="/about" element={} />. Navega con Link: Acerca de. Accede a parámetros de ruta con useParams: const { id } = useParams(). useNavigate proporciona navegación programática. React Router v6 es la versión actual con API simplificada.

En este módulo, exploraremos el fascinante mundo de React Router para Navegación. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


React Router

¿Qué es React Router?

Definición: Biblioteca para enrutamiento del lado del cliente en React

Cuando los expertos estudian react router, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender react router nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: React Router es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Ruta

¿Qué es Ruta?

Definición: Componente que mapea ruta URL a elemento

El concepto de ruta ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre ruta, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre ruta cada día.

Punto Clave: Ruta es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Link

¿Qué es Link?

Definición: Componente para navegación sin recarga de página

Para apreciar completamente link, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de link en diferentes contextos a tu alrededor.

Punto Clave: Link es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


useParams

¿Qué es useParams?

Definición: Hook para acceder a parámetros de URL

Comprender useparams nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de useparams para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: useParams es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


useNavigate

¿Qué es useNavigate?

Definición: Hook para navegación programática

El estudio de usenavigate revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: useNavigate es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Enrutamiento Avanzado

Las características de enrutamiento avanzado incluyen: Rutas anidadas para layouts: <Route path="dashboard" element={}><Route path="settings" element={} />. Rutas protegidas verifican autenticación. Rutas dinámicas: <Route path="users/:id" element={} />. useSearchParams maneja parámetros de consulta. Outlet renderiza contenido de rutas anidadas. useLocation accede a la URL actual. Carga perezosa de rutas con React.lazy mejora la carga inicial. El componente Navigate redirige. Estos patrones crean experiencias de navegación profesionales.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡React Router fue una de las primeras bibliotecas React importantes, creada en 2014. Ha sido completamente reescrita varias veces—¡v6 se ve muy diferente de v3!


Conceptos Clave de un Vistazo

Concepto Definición
React Router Biblioteca para enrutamiento del lado del cliente en React
Ruta Componente que mapea ruta URL a elemento
Link Componente para navegación sin recarga de página
useParams Hook para acceder a parámetros de URL
useNavigate Hook para navegación programática

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa React Router y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa Ruta y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa Link y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa useParams y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa useNavigate y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos React Router para Navegación. Aprendimos sobre react router, ruta, link, useparams, usenavigate. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

12

Patrones de Obtención de Datos

Obteniendo y gestionando datos del servidor efectivamente.

Key Concepts
Obtención de Datos TanStack Query useQuery Cacheo Actualización Optimista

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar Obtención de Datos
  • Definir y explicar TanStack Query
  • Definir y explicar useQuery
  • Definir y explicar Cacheo
  • Definir y explicar Actualización Optimista
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

Obtener datos es esencial para la mayoría de las aplicaciones React. Patrón básico: useEffect con fetch o axios. Maneja estados de carga y error: const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null). Para producción, usa bibliotecas de obtención de datos como TanStack Query (React Query) o SWR. Manejan caché, re-obtención y sincronización automáticamente. React moderno recomienda usar estas bibliotecas sobre obtención manual con useEffect para mejor rendimiento y experiencia de desarrollo.

En este módulo, exploraremos el fascinante mundo de Patrones de Obtención de Datos. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


Obtención de Datos

¿Qué es Obtención de Datos?

Definición: Obteniendo datos de servidores/APIs

Cuando los expertos estudian obtención de datos, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender obtención de datos nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: Obtención de Datos es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


TanStack Query

¿Qué es TanStack Query?

Definición: Biblioteca para gestión de estado del servidor

El concepto de tanstack query ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre tanstack query, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre tanstack query cada día.

Punto Clave: TanStack Query es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


useQuery

¿Qué es useQuery?

Definición: Hook para obtener y cachear datos

Para apreciar completamente usequery, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de usequery en diferentes contextos a tu alrededor.

Punto Clave: useQuery es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Cacheo

¿Qué es Cacheo?

Definición: Almacenando datos obtenidos para evitar re-obtención

Comprender cacheo nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de cacheo para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: Cacheo es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Actualización Optimista

¿Qué es Actualización Optimista?

Definición: Actualizando UI antes de que el servidor confirme el cambio

El estudio de actualización optimista revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Actualización Optimista es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: TanStack Query (React Query)

TanStack Query simplifica la gestión del estado del servidor: const { data, isLoading, error } = useQuery({ queryKey: ['todos'], queryFn: fetchTodos }). Proporciona caché automático, re-obtención en segundo plano, stale-while-revalidate, paginación y actualizaciones optimistas. Las mutaciones manejan POST/PUT/DELETE: const mutation = useMutation({ mutationFn: createTodo }). Las queries pueden depender de otros datos. DevTools ayuda a depurar. La biblioteca trata el estado del servidor diferente del estado del cliente, una percepción clave para aplicaciones React modernas.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡React Query fue renombrado a TanStack Query porque ahora también soporta Vue, Solid y Svelte! El creador, Tanner Linsley, construyó todo un "TanStack" de bibliotecas populares.


Conceptos Clave de un Vistazo

Concepto Definición
Obtención de Datos Obteniendo datos de servidores/APIs
TanStack Query Biblioteca para gestión de estado del servidor
useQuery Hook para obtener y cachear datos
Cacheo Almacenando datos obtenidos para evitar re-obtención
Actualización Optimista Actualizando UI antes de que el servidor confirme el cambio

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa Obtención de Datos y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa TanStack Query y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa useQuery y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa Cacheo y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa Actualización Optimista y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos Patrones de Obtención de Datos. Aprendimos sobre obtención de datos, tanstack query, usequery, cacheo, actualización optimista. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

13

Optimización de Rendimiento

Haciendo aplicaciones React rápidas y eficientes.

Key Concepts
useMemo useCallback React.memo División de Código Virtualización

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar useMemo
  • Definir y explicar useCallback
  • Definir y explicar React.memo
  • Definir y explicar División de Código
  • Definir y explicar Virtualización
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

React es rápido por defecto, pero la optimización importa para apps complejas. useMemo memoriza cálculos costosos: const sorted = useMemo(() => sortItems(items), [items]). useCallback memoriza funciones: const handleClick = useCallback(() => {}, [deps]). React.memo previene re-renderizados cuando los props no han cambiado. Code-splitting con React.lazy carga componentes bajo demanda. La virtualización renderiza solo elementos de lista visibles. Perfila con React DevTools para encontrar cuellos de botella. Optimiza cuando hayas medido problemas, no prematuramente.

En este módulo, exploraremos el fascinante mundo de Optimización de Rendimiento. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


useMemo

¿Qué es useMemo?

Definición: Hook que memoriza resultados de cálculos

Cuando los expertos estudian usememo, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender usememo nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: useMemo es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


useCallback

¿Qué es useCallback?

Definición: Hook que memoriza referencias de funciones

El concepto de usecallback ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre usecallback, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre usecallback cada día.

Punto Clave: useCallback es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


React.memo

¿Qué es React.memo?

Definición: HOC que previene re-renderizados con los mismos props

Para apreciar completamente react.memo, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de react.memo en diferentes contextos a tu alrededor.

Punto Clave: React.memo es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


División de Código

¿Qué es División de Código?

Definición: Cargando código bajo demanda para reducir bundle inicial

Comprender división de código nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de división de código para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: División de Código es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Virtualización

¿Qué es Virtualización?

Definición: Renderizando solo elementos visibles en listas largas

El estudio de virtualización revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Virtualización es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Estrategias de Memoización

Usa la memoización estratégicamente: React.memo para componentes que reciben los mismos props repetidamente. useMemo para cálculos costosos o creación de objetos complejos. useCallback cuando pasas callbacks a hijos memoizados. Sin embargo, la memoización tiene costos—uso de memoria y sobrecarga de comparación. No memoices todo—mide primero con React DevTools Profiler. Patrones comunes: memoiza componentes de elementos de lista, memoiza valores de contexto y divide componentes para aislar re-renderizados. El nuevo React Compiler (React Forget) automatizará mucho de esto.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡El equipo de React está construyendo "React Forget"—un compilador que añadirá memoización automáticamente donde sea necesario, potencialmente haciendo useMemo y useCallback menos necesarios!


Conceptos Clave de un Vistazo

Concepto Definición
useMemo Hook que memoriza resultados de cálculos
useCallback Hook que memoriza referencias de funciones
React.memo HOC que previene re-renderizados con los mismos props
División de Código Cargando código bajo demanda para reducir bundle inicial
Virtualización Renderizando solo elementos visibles en listas largas

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa useMemo y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa useCallback y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa React.memo y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa División de Código y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa Virtualización y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos Optimización de Rendimiento. Aprendimos sobre usememo, usecallback, react.memo, división de código, virtualización. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

14

Error Boundaries

Manejando errores con gracia en aplicaciones React.

Key Concepts
Error Boundary componentDidCatch UI de Respaldo react-error-boundary Registro de Errores

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar Error Boundary
  • Definir y explicar componentDidCatch
  • Definir y explicar UI de Respaldo
  • Definir y explicar react-error-boundary
  • Definir y explicar Registro de Errores
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

Los error boundaries capturan errores JavaScript en componentes hijos y muestran UI de respaldo en lugar de crashear. Son componentes de clase usando componentDidCatch y getDerivedStateFromError. Envuelve componentes: . Los error boundaries no capturan: errores de manejadores de eventos (usa try/catch), código async o errores de renderizado del lado del servidor. Bibliotecas como react-error-boundary proporcionan API basada en hooks. Coloca error boundaries estratégicamente—alrededor de rutas, características o toda la app. El buen manejo de errores mejora la experiencia de usuario durante fallas.

En este módulo, exploraremos el fascinante mundo de Error Boundaries. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


Error Boundary

¿Qué es Error Boundary?

Definición: Componente que captura y maneja errores en hijos

Cuando los expertos estudian error boundary, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender error boundary nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: Error Boundary es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


componentDidCatch

¿Qué es componentDidCatch?

Definición: Método de ciclo de vida llamado cuando se captura un error

El concepto de componentdidcatch ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre componentdidcatch, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre componentdidcatch cada día.

Punto Clave: componentDidCatch es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


UI de Respaldo

¿Qué es UI de Respaldo?

Definición: UI alternativa mostrada cuando ocurre un error

Para apreciar completamente ui de respaldo, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de ui de respaldo en diferentes contextos a tu alrededor.

Punto Clave: UI de Respaldo es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


react-error-boundary

¿Qué es react-error-boundary?

Definición: Biblioteca que proporciona API de error boundary más simple

Comprender react-error-boundary nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de react-error-boundary para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: react-error-boundary es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Registro de Errores

¿Qué es Registro de Errores?

Definición: Enviando errores a servicios de monitoreo

El estudio de registro de errores revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Registro de Errores es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Patrones de Error Boundary

Implementa manejo de errores efectivo: Usa la biblioteca react-error-boundary para API más simple y hooks. Proporciona UI de respaldo útil con opción de reintentar: <ErrorBoundary FallbackComponent={ErrorFallback} onReset={() => refetch()}>. Registra errores en servicios de monitoreo: onError={(error) => logToService(error)}. Anida boundaries para manejo granular—deja que parte de la UI falle mientras el resto funciona. Reinicia boundaries cuando los usuarios navegan fuera. Prueba error boundaries lanzando errores en desarrollo. Estos patrones crean aplicaciones resilientes.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? Los error boundaries solo funcionan en componentes de clase porque no hay equivalente de hook—el equipo de React dice que añadir try/catch a componentes funcionales cambiaría demasiado su semántica.


Conceptos Clave de un Vistazo

Concepto Definición
Error Boundary Componente que captura y maneja errores en hijos
componentDidCatch Método de ciclo de vida llamado cuando se captura un error
UI de Respaldo UI alternativa mostrada cuando ocurre un error
react-error-boundary Biblioteca que proporciona API de error boundary más simple
Registro de Errores Enviando errores a servicios de monitoreo

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa Error Boundary y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa componentDidCatch y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa UI de Respaldo y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa react-error-boundary y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa Registro de Errores y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos Error Boundaries. Aprendimos sobre error boundary, componentdidcatch, ui de respaldo, react-error-boundary, registro de errores. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

15

Probando Componentes React

Escribiendo pruebas para aplicaciones React confiables.

Key Concepts
React Testing Library render screen userEvent MSW

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar React Testing Library
  • Definir y explicar render
  • Definir y explicar screen
  • Definir y explicar userEvent
  • Definir y explicar MSW
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

Las pruebas aseguran que tus componentes React funcionen correctamente. React Testing Library se enfoca en probar comportamiento, no implementación. Instala: npm install @testing-library/react jest. Escribe pruebas: render(

16

TypeScript con React

Añadiendo seguridad de tipos a aplicaciones React.

Key Concepts
TypeScript Interface Genérico React.FC Inferencia de Tipos

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar TypeScript
  • Definir y explicar Interface
  • Definir y explicar Genérico
  • Definir y explicar React.FC
  • Definir y explicar Inferencia de Tipos
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

TypeScript añade tipado estático a JavaScript, capturando errores en tiempo de compilación. Con React, tipa props: interface ButtonProps { label: string; onClick: () => void; }. Usa React.FC o tipa componentes directamente: function Button({ label, onClick }: ButtonProps). Tipa estado: useState<User | null>(null). Tipa eventos: (e: React.ChangeEvent). TypeScript mejora el autocompletado del IDE, refactorización y documentación. La mayoría de proyectos React ahora usan TypeScript. Requiere aprendizaje, pero los beneficios para desarrollo en equipo y mantenimiento son significativos.

En este módulo, exploraremos el fascinante mundo de TypeScript con React. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


TypeScript

¿Qué es TypeScript?

Definición: Superconjunto tipado de JavaScript

Cuando los expertos estudian typescript, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender typescript nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: TypeScript es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Interface

¿Qué es Interface?

Definición: Estructura TypeScript definiendo forma de objeto

El concepto de interface ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre interface, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre interface cada día.

Punto Clave: Interface es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Genérico

¿Qué es Genérico?

Definición: Tipo que funciona con múltiples tipos

Para apreciar completamente genérico, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de genérico en diferentes contextos a tu alrededor.

Punto Clave: Genérico es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


React.FC

¿Qué es React.FC?

Definición: Tipo de Componente de Función con props

Comprender react.fc nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de react.fc para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: React.FC es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Inferencia de Tipos

¿Qué es Inferencia de Tipos?

Definición: TypeScript determinando tipos automáticamente

El estudio de inferencia de tipos revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Inferencia de Tipos es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Patrones Comunes de React TypeScript

Domina estos patrones de TypeScript: Para children, usa React.ReactNode. Para componentes como props, usa React.ComponentType. Componentes genéricos: function List({ items }: { items: T[] }). Uniones discriminadas para estado: type State = { status: 'loading' } | { status: 'success', data: User }. Infiere tipos cuando sea posible. Usa as const para tipos literales. Tipos de utilidad como Partial, Required y Pick ayudan. Tipa contexto con createContext<ContextType | null>(null). Estos patrones cubren la mayoría de necesidades de React TypeScript.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡TypeScript fue creado por Microsoft en 2012. Los tipos oficiales de React son mantenidos por la comunidad DefinitelyTyped en @types/react con millones de descargas semanales!


Conceptos Clave de un Vistazo

Concepto Definición
TypeScript Superconjunto tipado de JavaScript
Interface Estructura TypeScript definiendo forma de objeto
Genérico Tipo que funciona con múltiples tipos
React.FC Tipo de Componente de Función con props
Inferencia de Tipos TypeScript determinando tipos automáticamente

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa TypeScript y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa Interface y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa Genérico y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa React.FC y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa Inferencia de Tipos y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos TypeScript con React. Aprendimos sobre typescript, interface, genérico, react.fc, inferencia de tipos. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

17

Soluciones de Gestión de Estado

Comparando Redux, Zustand y otras bibliotecas de estado.

Key Concepts
Redux Zustand Jotai Redux Toolkit Store

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar Redux
  • Definir y explicar Zustand
  • Definir y explicar Jotai
  • Definir y explicar Redux Toolkit
  • Definir y explicar Store
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

Para aplicaciones complejas, puedes necesitar gestión de estado más allá del Context. Redux es la opción clásica: store único, acciones, reducers, middleware. Redux Toolkit simplifica Redux significativamente. Zustand ofrece API más simple: create((set) => ({ count: 0, increment: () => set(state => ({ count: state.count + 1 })) })). Jotai proporciona estado atómico. Recoil de Facebook usa átomos y selectores. Elige basándote en la complejidad de la app: useState/Context para simple, Zustand/Jotai para medio, Redux para apps grandes con requisitos complejos.

En este módulo, exploraremos el fascinante mundo de Soluciones de Gestión de Estado. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


Redux

¿Qué es Redux?

Definición: Contenedor de estado predecible con acciones y reducers

Cuando los expertos estudian redux, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender redux nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: Redux es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Zustand

¿Qué es Zustand?

Definición: Gestión de estado ligera con hooks

El concepto de zustand ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre zustand, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre zustand cada día.

Punto Clave: Zustand es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Jotai

¿Qué es Jotai?

Definición: Biblioteca de gestión de estado atómico

Para apreciar completamente jotai, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de jotai en diferentes contextos a tu alrededor.

Punto Clave: Jotai es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Redux Toolkit

¿Qué es Redux Toolkit?

Definición: Conjunto de herramientas oficial para desarrollo Redux eficiente

Comprender redux toolkit nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de redux toolkit para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: Redux Toolkit es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Store

¿Qué es Store?

Definición: Ubicación central que contiene el estado de la aplicación

El estudio de store revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Store es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Eligiendo la Solución Correcta

Compara opciones de gestión de estado: Redux Toolkit es poderoso con devtools, middleware y patrones para async—mejor para equipos grandes con estado complejo. Zustand es minimal con API basada en hooks, bundle pequeño y configuración simple—genial para la mayoría de apps. Jotai es atómico, bottom-up y flexible—bueno para apps que necesitan reactividad de grano fino. MobX usa observables para fans de programación reactiva. No sobre-ingenierices—comienza simple con useState/Context y añade bibliotecas solo cuando sea necesario. Muchas apps nunca necesitan gestión de estado externa.

Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.

¿Sabías que? ¡Zustand significa "estado" en alemán. Su autor, Poimandres, es un grupo que crea bibliotecas React populares incluyendo react-three-fiber para gráficos 3D!


Conceptos Clave de un Vistazo

Concepto Definición
Redux Contenedor de estado predecible con acciones y reducers
Zustand Gestión de estado ligera con hooks
Jotai Biblioteca de gestión de estado atómico
Redux Toolkit Conjunto de herramientas oficial para desarrollo Redux eficiente
Store Ubicación central que contiene el estado de la aplicación

Preguntas de Comprensión

Pon a prueba tu comprensión respondiendo estas preguntas:

  1. Con tus propias palabras, explica qué significa Redux y da un ejemplo de por qué es importante.

  2. Con tus propias palabras, explica qué significa Zustand y da un ejemplo de por qué es importante.

  3. Con tus propias palabras, explica qué significa Jotai y da un ejemplo de por qué es importante.

  4. Con tus propias palabras, explica qué significa Redux Toolkit y da un ejemplo de por qué es importante.

  5. Con tus propias palabras, explica qué significa Store y da un ejemplo de por qué es importante.

Resumen

En este módulo, exploramos Soluciones de Gestión de Estado. Aprendimos sobre redux, zustand, jotai, redux toolkit, store. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!

18

Server Components y React 19

El futuro de React con capacidades del lado del servidor.

Key Concepts
Server Component Client Component use() Actions Hidratación

Objetivos de Aprendizaje

Al finalizar este módulo, serás capaz de:

  • Definir y explicar Server Component
  • Definir y explicar Client Component
  • Definir y explicar use()
  • Definir y explicar Actions
  • Definir y explicar Hidratación
  • Aplicar estos conceptos a ejemplos y escenarios del mundo real
  • Analizar y comparar los conceptos clave presentados en este módulo

Introducción

Los React Server Components (RSC) se ejecutan en el servidor, enviando solo HTML al cliente. Pueden acceder a bases de datos, sistemas de archivos y realizar cálculos costosos sin enviar código al navegador. Los componentes son Server Components por defecto en frameworks como Next.js 13+. Los Client Components necesitan la directiva "use client". Los Server Components no pueden usar estado o efectos—son para renderizado estático. React 19 añade el hook use(), actions para formularios y suspense mejorado. Esto marca una evolución mayor en las capacidades de React.

En este módulo, exploraremos el fascinante mundo de Server Components y React 19. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.

Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!


Server Component

¿Qué es Server Component?

Definición: Componente que se ejecuta en el servidor

Cuando los expertos estudian server component, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender server component nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.

Punto Clave: Server Component es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Client Component

¿Qué es Client Component?

Definición: Componente que se ejecuta en el navegador

El concepto de client component ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre client component, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre client component cada día.

Punto Clave: Client Component es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


use()

¿Qué es use()?

Definición: Hook para leer promesas y contexto

Para apreciar completamente use(), es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de use() en diferentes contextos a tu alrededor.

Punto Clave: use() es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Actions

¿Qué es Actions?

Definición: Funciones para manejar envíos de formularios

Comprender actions nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de actions para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.

Punto Clave: Actions es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


Hidratación

¿Qué es Hidratación?

Definición: Haciendo interactivo el HTML renderizado en servidor

El estudio de hidratación revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.

Punto Clave: Hidratación es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!


🔬 Profundización: Nuevas Características de React 19

React 19 introduce características poderosas: El hook use() lee promesas y contexto condicionalmente. Las Actions manejan envíos de formularios con useFormState y useFormStatus. useOptimistic habilita actualizaciones optimistas de UI. Los metadatos del documento pueden renderizarse en componentes con , <meta>. La hidratación mejorada reduce errores. Estas características funcionan mejor con frameworks como Next.js que implementan la arquitectura completa de React. React está evolucionando de una biblioteca a un ecosistema de framework más completo.</p> <p>Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.</p> <blockquote> <p><strong>¿Sabías que?</strong> ¡Los Server Components fueron inspirados por la simplicidad de PHP—cargar datos y renderizar en el servidor, enviar HTML al cliente. ¡Es React completando el círculo después de años de renderizado del lado del cliente!</p> </blockquote> <hr> <h2>Conceptos Clave de un Vistazo</h2> <table> <thead> <tr> <th>Concepto</th> <th>Definición</th> </tr> </thead> <tbody><tr> <td><strong>Server Component</strong></td> <td>Componente que se ejecuta en el servidor</td> </tr> <tr> <td><strong>Client Component</strong></td> <td>Componente que se ejecuta en el navegador</td> </tr> <tr> <td><strong>use()</strong></td> <td>Hook para leer promesas y contexto</td> </tr> <tr> <td><strong>Actions</strong></td> <td>Funciones para manejar envíos de formularios</td> </tr> <tr> <td><strong>Hidratación</strong></td> <td>Haciendo interactivo el HTML renderizado en servidor</td> </tr> </tbody></table> <hr> <h2>Preguntas de Comprensión</h2> <p>Pon a prueba tu comprensión respondiendo estas preguntas:</p> <ol> <li><p>Con tus propias palabras, explica qué significa <strong>Server Component</strong> y da un ejemplo de por qué es importante.</p> </li> <li><p>Con tus propias palabras, explica qué significa <strong>Client Component</strong> y da un ejemplo de por qué es importante.</p> </li> <li><p>Con tus propias palabras, explica qué significa <strong>use()</strong> y da un ejemplo de por qué es importante.</p> </li> <li><p>Con tus propias palabras, explica qué significa <strong>Actions</strong> y da un ejemplo de por qué es importante.</p> </li> <li><p>Con tus propias palabras, explica qué significa <strong>Hidratación</strong> y da un ejemplo de por qué es importante.</p> </li> </ol> <h2>Resumen</h2> <p>En este módulo, exploramos <strong>Server Components y React 19</strong>. Aprendimos sobre server component, client component, use(), actions, hidratación. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!</p> </div> </div> </details><details class="group rounded-xl border border-border bg-card overflow-hidden" data-astro-cid-tlvtcxmm> <summary class="flex items-center gap-4 p-4 cursor-pointer hover:bg-muted/50 transition-colors list-none [&::-webkit-details-marker]:hidden" data-astro-cid-tlvtcxmm> <div class="flex-shrink-0 w-10 h-10 rounded-full bg-primary/10 text-primary flex items-center justify-center text-sm font-semibold" data-astro-cid-tlvtcxmm> 19 </div> <div class="flex-1 min-w-0" data-astro-cid-tlvtcxmm> <h3 class="text-base font-semibold text-foreground group-open:text-primary transition-colors" data-astro-cid-tlvtcxmm> Construyendo Aplicaciones de Producción </h3> <p class="text-sm text-muted-foreground mt-0.5 line-clamp-1" data-astro-cid-tlvtcxmm> Mejores prácticas para apps React listas para producción. </p> </div> <div class="flex items-center gap-3 flex-shrink-0" data-astro-cid-tlvtcxmm> <div class="hidden sm:flex items-center gap-1 text-xs text-muted-foreground" data-astro-cid-tlvtcxmm> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock w-3.5 h-3.5" data-astro-cid-tlvtcxmm="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> <span data-astro-cid-tlvtcxmm>30m</span> </div> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-5 h-5 text-muted-foreground transition-transform duration-200 group-open:rotate-180" data-astro-cid-tlvtcxmm="true"><path d="m6 9 6 6 6-6"></path></svg> </div> </summary> <div class="px-4 pb-4 pt-2 border-t border-border bg-muted/20" data-astro-cid-tlvtcxmm> <div class="mb-4 p-3 rounded-lg bg-background border border-border" data-astro-cid-tlvtcxmm> <div class="flex items-center gap-2 text-xs font-medium text-foreground mb-2" data-astro-cid-tlvtcxmm> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag w-3.5 h-3.5" data-astro-cid-tlvtcxmm="true"><path d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z"></path><circle cx="7.5" cy="7.5" r=".5" fill="currentColor"></circle></svg> Key Concepts </div> <div class="flex flex-wrap gap-1.5" data-astro-cid-tlvtcxmm> <span class="text-xs bg-primary/10 text-primary px-2 py-0.5 rounded-full" title="Framework React para aplicaciones de producción" data-astro-cid-tlvtcxmm> Next.js </span><span class="text-xs bg-primary/10 text-primary px-2 py-0.5 rounded-full" title="Framework React full-stack enfocado en estándares web" data-astro-cid-tlvtcxmm> Remix </span><span class="text-xs bg-primary/10 text-primary px-2 py-0.5 rounded-full" title="Organizando código por característica en lugar de tipo" data-astro-cid-tlvtcxmm> Carpetas de Características </span><span class="text-xs bg-primary/10 text-primary px-2 py-0.5 rounded-full" title="Pipeline de integración y despliegue continuo" data-astro-cid-tlvtcxmm> CI/CD </span><span class="text-xs bg-primary/10 text-primary px-2 py-0.5 rounded-full" title="Reduciendo el tamaño de JavaScript enviado al navegador" data-astro-cid-tlvtcxmm> Optimización de Bundle </span> </div> </div> <div class="prose prose-sm dark:prose-invert max-w-none" data-astro-cid-tlvtcxmm> <h2>Objetivos de Aprendizaje</h2> <p>Al finalizar este módulo, serás capaz de:</p> <ul> <li>Definir y explicar <strong>Next.js</strong></li> <li>Definir y explicar <strong>Remix</strong></li> <li>Definir y explicar <strong>Carpetas de Características</strong></li> <li>Definir y explicar <strong>CI/CD</strong></li> <li>Definir y explicar <strong>Optimización de Bundle</strong></li> <li>Aplicar estos conceptos a ejemplos y escenarios del mundo real</li> <li>Analizar y comparar los conceptos clave presentados en este módulo</li> </ul> <hr> <h2>Introducción</h2> <p>Las aplicaciones React de producción necesitan arquitectura cuidadosa. Usa un framework como Next.js o Remix para enrutamiento, SSR y optimización. Estructura código en características o dominios. Configura ESLint y Prettier para consistencia. Configura CI/CD con pruebas. Maneja errores con boundaries y monitoreo. Implementa autenticación apropiadamente. Optimiza tamaño del bundle con code splitting. Añade analytics y monitoreo de rendimiento. Considera accesibilidad desde el inicio. Seguridad: sanitiza entradas, usa HTTPS, implementa CSP. Las apps de producción requieren atención a todas estas áreas.</p> <p>En este módulo, exploraremos el fascinante mundo de <strong>Construyendo Aplicaciones de Producción</strong>. Descubrirás conceptos clave que forman la base de este tema. Cada concepto se basa en el anterior, así que presta mucha atención y toma notas a medida que avanzas. Al final, tendrás una comprensión sólida de este importante tema.</p> <p>Este tema es esencial para entender cómo funciona esta materia y cómo los expertos organizan su conocimiento. ¡Sumerjámonos y descubramos qué hace este tema tan importante!</p> <hr> <h2>Next.js</h2> <h3>¿Qué es Next.js?</h3> <p><strong>Definición:</strong> Framework React para aplicaciones de producción</p> <p>Cuando los expertos estudian next.js, descubren detalles fascinantes sobre cómo funcionan los sistemas. Este concepto se conecta con muchos aspectos del tema que los investigadores investigan todos los días. Comprender next.js nos ayuda a ver el panorama general. Piensa en ejemplos cotidianos para profundizar tu comprensión — podrías sorprenderte de cuán a menudo encuentras este concepto en el mundo que te rodea.</p> <blockquote> <p><strong>Punto Clave:</strong> Next.js es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!</p> </blockquote> <hr> <h2>Remix</h2> <h3>¿Qué es Remix?</h3> <p><strong>Definición:</strong> Framework React full-stack enfocado en estándares web</p> <p>El concepto de remix ha sido estudiado durante muchas décadas, llevando a descubrimientos revolucionarios. La investigación en esta área continúa avanzando nuestra comprensión en cada escala. Al aprender sobre remix, estás construyendo una base sólida que respaldará tus estudios en temas más avanzados. Expertos de todo el mundo trabajan para descubrir nuevos conocimientos sobre remix cada día.</p> <blockquote> <p><strong>Punto Clave:</strong> Remix es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!</p> </blockquote> <hr> <h2>Carpetas de Características</h2> <h3>¿Qué es Carpetas de Características?</h3> <p><strong>Definición:</strong> Organizando código por característica en lugar de tipo</p> <p>Para apreciar completamente carpetas de características, es útil considerar cómo funciona en aplicaciones del mundo real. Esta naturaleza universal es lo que lo convierte en un concepto tan fundamental en este campo. A medida que aprendas más, intenta identificar ejemplos de carpetas de características en diferentes contextos a tu alrededor.</p> <blockquote> <p><strong>Punto Clave:</strong> Carpetas de Características es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!</p> </blockquote> <hr> <h2>CI/CD</h2> <h3>¿Qué es CI/CD?</h3> <p><strong>Definición:</strong> Pipeline de integración y despliegue continuo</p> <p>Comprender ci/cd nos ayuda a entender muchos procesos que afectan nuestra vida diaria. Los expertos usan su conocimiento de ci/cd para resolver problemas, desarrollar nuevas soluciones y mejorar resultados. Este concepto tiene aplicaciones prácticas que van mucho más allá del aula.</p> <blockquote> <p><strong>Punto Clave:</strong> CI/CD es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!</p> </blockquote> <hr> <h2>Optimización de Bundle</h2> <h3>¿Qué es Optimización de Bundle?</h3> <p><strong>Definición:</strong> Reduciendo el tamaño de JavaScript enviado al navegador</p> <p>El estudio de optimización de bundle revela la elegante complejidad de cómo funcionan las cosas. Cada nuevo descubrimiento abre puertas para comprender otros aspectos y cómo el conocimiento en este campo ha evolucionado con el tiempo. Al explorar este concepto, intenta conectarlo con lo que ya sabes — descubrirás que todo está interconectado de maneras hermosas y sorprendentes.</p> <blockquote> <p><strong>Punto Clave:</strong> Optimización de Bundle es un concepto fundamental que encontrarás a lo largo de tus estudios. ¡Asegúrate de poder explicarlo con tus propias palabras!</p> </blockquote> <hr> <h2>🔬 Profundización: Arquitectura de Aplicaciones React</h2> <p>Organiza aplicaciones React grandes: Carpetas basadas en características agrupan código relacionado (componentes, hooks, utils por característica). Código compartido vive en common/components. Usa barrel exports (index.ts) para imports limpios. La colocación mantiene código relacionado junto. Los hooks personalizados abstraen lógica de negocio. La capa API centraliza obtención de datos. Types/interfaces en archivos dedicados. Variables de entorno para configuración. Esta arquitectura escala bien y hace el código descubrible. Adapta patrones a las necesidades de tu equipo en lugar de seguir rígidamente.</p> <p>Este es un tema avanzado que va más allá del material central, pero comprenderlo te dará una apreciación más profunda del tema. Los investigadores continúan estudiando esta área, y se hacen nuevos descubrimientos todo el tiempo.</p> <blockquote> <p><strong>¿Sabías que?</strong> ¡Meta (Facebook) ejecuta la aplicación React más grande del mundo—facebook.com tiene miles de ingenieros commitiendo al mismo codebase React diariamente!</p> </blockquote> <hr> <h2>Conceptos Clave de un Vistazo</h2> <table> <thead> <tr> <th>Concepto</th> <th>Definición</th> </tr> </thead> <tbody><tr> <td><strong>Next.js</strong></td> <td>Framework React para aplicaciones de producción</td> </tr> <tr> <td><strong>Remix</strong></td> <td>Framework React full-stack enfocado en estándares web</td> </tr> <tr> <td><strong>Carpetas de Características</strong></td> <td>Organizando código por característica en lugar de tipo</td> </tr> <tr> <td><strong>CI/CD</strong></td> <td>Pipeline de integración y despliegue continuo</td> </tr> <tr> <td><strong>Optimización de Bundle</strong></td> <td>Reduciendo el tamaño de JavaScript enviado al navegador</td> </tr> </tbody></table> <hr> <h2>Preguntas de Comprensión</h2> <p>Pon a prueba tu comprensión respondiendo estas preguntas:</p> <ol> <li><p>Con tus propias palabras, explica qué significa <strong>Next.js</strong> y da un ejemplo de por qué es importante.</p> </li> <li><p>Con tus propias palabras, explica qué significa <strong>Remix</strong> y da un ejemplo de por qué es importante.</p> </li> <li><p>Con tus propias palabras, explica qué significa <strong>Carpetas de Características</strong> y da un ejemplo de por qué es importante.</p> </li> <li><p>Con tus propias palabras, explica qué significa <strong>CI/CD</strong> y da un ejemplo de por qué es importante.</p> </li> <li><p>Con tus propias palabras, explica qué significa <strong>Optimización de Bundle</strong> y da un ejemplo de por qué es importante.</p> </li> </ol> <h2>Resumen</h2> <p>En este módulo, exploramos <strong>Construyendo Aplicaciones de Producción</strong>. Aprendimos sobre next.js, remix, carpetas de características, ci/cd, optimización de bundle. Cada uno de estos conceptos juega un papel crucial en la comprensión del tema más amplio. Recuerda que estas ideas son bloques de construcción — cada módulo se conecta con el siguiente, ayudándote a construir una imagen completa. ¡Sigue repasando estos conceptos y estarás bien preparado para lo que viene!</p> </div> </div> </details> </div> </div> </section> <!-- CTA --> <section class="mt-12 rounded-2xl bg-gradient-to-br from-primary/10 via-primary/5 to-transparent border border-primary/20 p-6 sm:p-8"> <div class="flex flex-col sm:flex-row items-center gap-6"> <div class="flex-shrink-0"> <div class="w-16 h-16 rounded-2xl bg-primary/20 flex items-center justify-center"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles w-8 h-8 text-primary"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path><path d="M20 3v4"></path><path d="M22 5h-4"></path><path d="M4 17v2"></path><path d="M5 18H3"></path></svg> </div> </div> <div class="flex-1 text-center sm:text-left"> <h3 class="text-lg font-semibold text-foreground"> Ready to master Guía Completa de React.js? </h3> <p class="mt-1 text-sm text-muted-foreground"> Get personalized AI tutoring with flashcards, quizzes, and interactive exercises in the Eludo app </p> </div> <div class="flex flex-col sm:flex-row gap-3"> <a href="https://apps.apple.com/app/eludo-ai/id6737712044" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center gap-2 px-5 py-2.5 rounded-xl bg-foreground text-background font-medium text-sm hover:opacity-90 transition-opacity"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-download w-4 h-4"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" x2="12" y1="15" y2="3"></line></svg> <span>App Store</span> </a> <a href="https://play.google.com/store/apps/details?id=com.eludo.app" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center gap-2 px-5 py-2.5 rounded-xl bg-primary text-primary-foreground font-medium text-sm hover:opacity-90 transition-opacity"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-smartphone w-4 h-4"><rect width="14" height="20" x="5" y="2" rx="2" ry="2"></rect><path d="M12 18h.01"></path></svg> <span>Google Play</span> </a> </div> </div> <div class="mt-6 flex flex-wrap justify-center sm:justify-start gap-4 text-xs text-muted-foreground"> <div class="flex items-center gap-1.5"> <span class="w-1.5 h-1.5 rounded-full bg-green-500"></span> Personalized learning </div> <div class="flex items-center gap-1.5"> <span class="w-1.5 h-1.5 rounded-full bg-blue-500"></span> Interactive exercises </div> <div class="flex items-center gap-1.5"> <span class="w-1.5 h-1.5 rounded-full bg-purple-500"></span> Offline access </div> </div> </section> <!-- Related Topics --> <section class="mt-12"> <h2 class="text-xl font-semibold text-foreground mb-4"> Related Topics </h2> <div class="grid gap-4 sm:grid-cols-2"> <a href="/learn/technology-computing/software-development/web-development/python-programming" class="group block rounded-xl border border-border bg-card hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden p-4"> <div class="flex items-start gap-3"> <div class="flex-1 min-w-0"> <div class="flex items-start justify-between gap-2"> <h3 class="font-semibold text-foreground group-hover:text-primary transition-colors text-sm line-clamp-2"> Python Programming </h3> </div> <div class="flex flex-wrap items-center gap-3 mt-2"> <span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-green-500/10 text-green-600 dark:text-green-400"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chart-no-axes-column w-3 h-3 mr-1"><line x1="18" x2="18" y1="20" y2="10"></line><line x1="12" x2="12" y1="20" y2="4"></line><line x1="6" x2="6" y1="20" y2="14"></line></svg> Beginner </span> <div class="flex items-center gap-1 text-xs text-muted-foreground"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open w-3.5 h-3.5"><path d="M12 7v14"></path><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path></svg> <span>22 modules</span> </div> <div class="flex items-center gap-1 text-xs text-muted-foreground"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock w-3.5 h-3.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> <span>750 min</span> </div> </div> </div> </div> </a><a href="/learn/technology-computing/software-development/web-development/programacion-en-python" class="group block rounded-xl border border-border bg-card hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden p-4"> <div class="flex items-start gap-3"> <div class="flex-1 min-w-0"> <div class="flex items-start justify-between gap-2"> <h3 class="font-semibold text-foreground group-hover:text-primary transition-colors text-sm line-clamp-2"> Programación en Python </h3> </div> <div class="flex flex-wrap items-center gap-3 mt-2"> <span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-green-500/10 text-green-600 dark:text-green-400"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chart-no-axes-column w-3 h-3 mr-1"><line x1="18" x2="18" y1="20" y2="10"></line><line x1="12" x2="12" y1="20" y2="4"></line><line x1="6" x2="6" y1="20" y2="14"></line></svg> Beginner </span> <div class="flex items-center gap-1 text-xs text-muted-foreground"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open w-3.5 h-3.5"><path d="M12 7v14"></path><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path></svg> <span>22 modules</span> </div> <div class="flex items-center gap-1 text-xs text-muted-foreground"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock w-3.5 h-3.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> <span>750 min</span> </div> </div> </div> </div> </a><a href="/learn/technology-computing/software-development/web-development/react-js-complete-guide" class="group block rounded-xl border border-border bg-card hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden p-4"> <div class="flex items-start gap-3"> <div class="flex-1 min-w-0"> <div class="flex items-start justify-between gap-2"> <h3 class="font-semibold text-foreground group-hover:text-primary transition-colors text-sm line-clamp-2"> React.js Complete Guide </h3> </div> <div class="flex flex-wrap items-center gap-3 mt-2"> <span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chart-no-axes-column w-3 h-3 mr-1"><line x1="18" x2="18" y1="20" y2="10"></line><line x1="12" x2="12" y1="20" y2="4"></line><line x1="6" x2="6" y1="20" y2="14"></line></svg> Intermediate </span> <div class="flex items-center gap-1 text-xs text-muted-foreground"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open w-3.5 h-3.5"><path d="M12 7v14"></path><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path></svg> <span>19 modules</span> </div> <div class="flex items-center gap-1 text-xs text-muted-foreground"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock w-3.5 h-3.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> <span>600 min</span> </div> </div> </div> </div> </a><a href="/learn/technology-computing/software-development/web-development/fundamentos-de-ciberseguridad" class="group block rounded-xl border border-border bg-card hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden p-4"> <div class="flex items-start gap-3"> <div class="flex-1 min-w-0"> <div class="flex items-start justify-between gap-2"> <h3 class="font-semibold text-foreground group-hover:text-primary transition-colors text-sm line-clamp-2"> Fundamentos de Ciberseguridad </h3> </div> <div class="flex flex-wrap items-center gap-3 mt-2"> <span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-yellow-500/10 text-yellow-600 dark:text-yellow-400"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chart-no-axes-column w-3 h-3 mr-1"><line x1="18" x2="18" y1="20" y2="10"></line><line x1="12" x2="12" y1="20" y2="4"></line><line x1="6" x2="6" y1="20" y2="14"></line></svg> Intermediate </span> <div class="flex items-center gap-1 text-xs text-muted-foreground"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open w-3.5 h-3.5"><path d="M12 7v14"></path><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path></svg> <span>20 modules</span> </div> <div class="flex items-center gap-1 text-xs text-muted-foreground"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock w-3.5 h-3.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> <span>1200 min</span> </div> </div> </div> </div> </a> </div> </section> </article> </div> </main> <footer class="border-t border-border bg-background-secondary"> <div class="mx-auto px-4 sm:px-6 lg:px-8 max-w-6xl"> <div class="py-12 lg:py-16"> <!-- Main Footer Grid --> <div class="grid gap-8 lg:grid-cols-6"> <!-- Brand Column --> <div class="lg:col-span-2"> <a href="/" class="flex items-center gap-2"> <img src="/images/logo-icon.png" alt="Eludo AI" class="h-8" loading="lazy"> <span class="text-lg font-bold text-foreground">Eludo AI</span> </a> <p class="mt-4 max-w-xs text-sm text-muted-foreground"> AI-powered learning for everyone. </p> <div class="mt-6"> <div class="flex flex-wrap items-center gap-3"> <a href="#" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-2 rounded-lg bg-white px-4 py-2 text-black transition-opacity hover:opacity-90"> <svg class="h-10" viewBox="0 0 24 24" fill="currentColor"> <path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"></path> </svg> <div class="flex flex-col"> <span class="text-[10px] leading-none">Download on the</span> <span class="text-sm font-semibold leading-tight">App Store</span> </div> </a> <a href="#" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-2 rounded-lg bg-white px-4 py-2 text-black transition-opacity hover:opacity-90"> <svg class="h-10" viewBox="0 0 24 24" fill="currentColor"> <path d="M3,20.5V3.5C3,2.91 3.34,2.39 3.84,2.15L13.69,12L3.84,21.85C3.34,21.6 3,21.09 3,20.5M16.81,15.12L6.05,21.34L14.54,12.85L16.81,15.12M20.16,10.81C20.5,11.08 20.75,11.5 20.75,12C20.75,12.5 20.53,12.9 20.18,13.18L17.89,14.5L15.39,12L17.89,9.5L20.16,10.81M6.05,2.66L16.81,8.88L14.54,11.15L6.05,2.66Z"></path> </svg> <div class="flex flex-col"> <span class="text-[10px] leading-none">GET IT ON</span> <span class="text-sm font-semibold leading-tight">Google Play</span> </div> </a> </div> </div> </div> <!-- Product --> <div> <h3 class="text-sm font-semibold text-foreground">Product</h3> <ul class="mt-4 space-y-3"> <li> <a href="/features" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> Features </a> </li><li> <a href="/pricing" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> Pricing </a> </li><li> <a href="/learn" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> Explore Topics </a> </li><li> <a href="/learn-with-ai" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> Learn with AI </a> </li> </ul> </div> <!-- Solutions --> <div> <h3 class="text-sm font-semibold text-foreground">Solutions</h3> <ul class="mt-4 space-y-3"> <li> <a href="/for-teachers" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> For Teachers </a> </li><li> <a href="/for-schools" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> For Schools </a> </li><li> <a href="/for-parents" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> For Parents </a> </li><li> <a href="/saas-escuelas" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> SaaS for Schools </a> </li><li> <a href="/colombia" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> Colombia </a> </li> </ul> </div> <!-- Company --> <div> <h3 class="text-sm font-semibold text-foreground">Company</h3> <ul class="mt-4 space-y-3"> <li> <a href="/about" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> About </a> </li> </ul> </div> <!-- Legal --> <div> <h3 class="text-sm font-semibold text-foreground">Legal</h3> <ul class="mt-4 space-y-3"> <li> <a href="/privacy" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> Privacy Policy </a> </li><li> <a href="/terms" class="text-sm text-muted-foreground transition-colors hover:text-foreground"> Terms of Service </a> </li> </ul> </div> </div> <!-- Bottom Bar --> <div class="mt-12 flex flex-col items-center justify-between gap-4 border-t border-border pt-8 sm:flex-row"> <p class="text-sm text-muted-foreground"> © 2026 Eludo AI. All rights reserved. </p> <div class="flex items-center gap-4"> <a href="https://twitter.com/eludoai" target="_blank" rel="noopener noreferrer" class="text-muted-foreground transition-colors hover:text-foreground" aria-label="Twitter"> <svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg> </a><a href="https://linkedin.com/company/eludoai" target="_blank" rel="noopener noreferrer" class="text-muted-foreground transition-colors hover:text-foreground" aria-label="LinkedIn"> <svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg> </a><a href="https://instagram.com/eludoai" target="_blank" rel="noopener noreferrer" class="text-muted-foreground transition-colors hover:text-foreground" aria-label="Instagram"> <svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg> </a> </div> </div> </div> </div> </footer> </body></html>