diff --git a/_quarto.yml b/_quarto.yml index 18580f8..0ecf893 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -89,6 +89,10 @@ website: >>>>>>> 8e10774 (feat: explicacion semana 10 (#4)) - section: "Bloque IV Comunicación" + contents: + - section: "Semana 11" + contents: + - pages/Bloque4/protocolos.qmd - pages/rubric.qmd diff --git a/docs/about.pdf b/docs/about.pdf index 5aa0478..be621c3 100644 Binary files a/docs/about.pdf and b/docs/about.pdf differ diff --git a/docs/index.html b/docs/index.html index 84f3bda..e72da4a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -543,8 +543,32 @@ - + + + + + >>>>>>> 8e10774 (feat: explicacion semana 10 (#4)) + + - -======= - - - ->>>>>>> 8e10774 (feat: explicacion semana 10 (#4)) - - - - - - - -
- + +
+ - -
+ +
-
-
-

React IV

-

Ecosistema npm, React Router, useContext

-
+
+ +
+

React IV

+

Ecosistema npm, React Router, useContext

+
-
+
-
-
Autor/a
-
-

Javier Ribal del Río

+
+
Autor/a
+
+

Javier Ribal del Río

+
-
- -
-
Fecha de publicación
-
-

6 de marzo de 2026

-
-
- -
-
Fecha de última modificación
-
-<<<<<<< HEAD -

7 de marzo de 2026

-======= -

4 de marzo de 2026

->>>>>>> 8e10774 (feat: explicacion semana 10 (#4)) -
-
- -
- + +
+
Fecha de publicación
+
+

6 de marzo de 2026

+
+
+ +
+
Fecha de última modificación
+
+ <<<<<<< HEAD

7 de marzo de 2026

+ ======= +

4 de marzo de 2026

+ >>>>>>> 8e10774 (feat: explicacion semana 10 (#4)) +
+
+ +
-
+
-

Contenido

- -
-

Ecosistema Node

-

Hasta ahora hemos trabajado únicamente con React y JavaScript.

-

Sin embargo, en el desarrollo real de aplicaciones es muy común utilizar librerías externas, para ello podemos recurrir Node.JS.

-

React está diseñado para funcionar dentro de un ecosistema de paquetes.

-

Ejemplos habituales:

-
    -
  • React Router → navegación
  • -
  • Axios → peticiones HTTP
  • -
  • Chart.js → gráficas
  • -
  • Zustand / Redux → gestión de estado
  • -
  • Librerías de UI: Tailwind, Bootstrap, Booswatch
  • -
-
-
-

npm

-

npm (Node Package Manager) es el sistema que permite instalar y gestionar librerías de JavaScript. Como su nombre indica, está desarrollado por Node.JS

-

Cada proyecto tiene un archivo:

-
package.json
-

En este archivo se registran las dependencias del proyecto.

-

Ejemplo:

-
{
+
+      

Contenido

+
    +
  • Ecosistema React y paquetes npm
  • +
  • Librerías externas
  • +
  • React Router
  • +
  • Parámetros de URL
  • +
  • useContext
  • +
+
+

Ecosistema Node

+

Hasta ahora hemos trabajado únicamente con React y JavaScript.

+

Sin embargo, en el desarrollo real de aplicaciones es muy común utilizar librerías externas, + para ello podemos recurrir Node.JS.

+

React está diseñado para funcionar dentro de un ecosistema de paquetes.

+

Ejemplos habituales:

+
    +
  • React Router → navegación
  • +
  • Axios → peticiones HTTP
  • +
  • Chart.js → gráficas
  • +
  • Zustand / Redux → gestión de estado
  • +
  • Librerías de UI: Tailwind, Bootstrap, Booswatch
  • +
+
+
+

npm

+

npm (Node Package Manager) es el sistema que permite instalar y gestionar librerías de + JavaScript. Como su nombre indica, está desarrollado por Node.JS

+

Cada proyecto tiene un archivo:

+
package.json
+

En este archivo se registran las dependencias del proyecto.

+

Ejemplo:

+
+
+
{
   "dependencies": {
     "react": "^18.0.0",
     "react-router-dom": "^6.0.0"
   }
-}
-
-

Instalación de paquetes

-

Las librerías se instalan desde la terminal.

-
npm install react-router-dom
-

Esto hace tres cosas:

-
    -
  1. Descarga el paquete
  2. -
  3. Lo guarda en node_modules (capreta donde se guardan las librerías externas)
  4. -
  5. Añade la dependencia en package.json
  6. -
-
-
-
-

React Router

-

En una aplicación web tradicional cada enlace carga una página nueva.

-

En React normalmente trabajamos con Single Page Applications (SPA).

-

En una SPA:

-
    -
  • el navegador no recarga la página
  • -
  • React cambia los componentes que se muestran
  • -
-

Para gestionar esto utilizamos React Router.

-

Realmente es la misma página, solo que el usuario lo percibe como distintas páginas

-

El usuario percibirá que el sitio web está divido en diferentes subpáginas

-
    -
  • /
  • -
  • pokemons
  • -
  • pokemons/pikachu
  • -
-
-

Componentes principales de React Router

-

Los elementos fundamentales son:

-
    -
  • BrowserRouter
  • -
  • Routes
  • -
  • Route
  • -
  • Link
  • -
-

Ejemplo básico:

-
import { BrowserRouter, Routes, Route } from "react-router-dom";
+}
+
+
+
+

Instalación de paquetes

+

Las librerías se instalan desde la terminal.

+
+
+
npm install react-router-dom
+
+
+

Esto hace tres cosas:

+
    +
  1. Descarga el paquete
  2. +
  3. Lo guarda en node_modules (capreta donde se guardan las librerías externas)
  4. +
  5. Añade la dependencia en package.json
  6. +
+
+
+
+

React Router

+

En una aplicación web tradicional cada enlace carga una página nueva.

+

En React normalmente trabajamos con Single Page Applications (SPA).

+

En una SPA:

+
    +
  • el navegador no recarga la página
  • +
  • React cambia los componentes que se muestran
  • +
+

Para gestionar esto utilizamos React Router.

+

Realmente es la misma página, solo que el usuario lo percibe como distintas páginas

+

El usuario percibirá que el sitio web está divido en diferentes subpáginas

+
    +
  • /
  • +
  • pokemons
  • +
  • pokemons/pikachu
  • +
+
+

Componentes principales de React + Router

+

Los elementos fundamentales son:

+
    +
  • BrowserRouter
  • +
  • Routes
  • +
  • Route
  • +
  • Link
  • +
+

Ejemplo básico:

+
+
+
import { BrowserRouter, Routes, Route } from "react-router-dom";
 
 function App() {
   return (
@@ -760,54 +976,70 @@ 

Co </BrowserRouter> ); -}

-

Elementos del código

-
    -
  • BrowserRouter
    -Es el componente que activa el sistema de navegación de React Router. Utiliza la API de historial del navegador para cambiar la URL sin recargar la página.
  • -
  • Routes
    -Es el contenedor donde se definen todas las rutas de la aplicación. React Router examina las rutas dentro de este componente para decidir qué componente mostrar.
  • -
  • Route
    -Define una ruta concreta de la aplicación.
  • -
-
    -
  • path
    -Indica la URL que activa la ruta.
    -Ejemplo: / corresponde a la página principal.
  • -
  • element
    -Es el componente de React que se renderiza cuando la URL coincide con el path.
  • -
  • <Home />
    -Componente que se muestra cuando el usuario accede a la ruta /.
  • -
  • <PokemonList />
    -Componente que se muestra cuando el usuario accede a la ruta /pokemons.
  • -
-
- + -
-

Parámetros dinámicos

-

Podemos crear rutas dinámicas.

-

Ejemplo:

-
/pokemon/25
+<Link to="/pokemon">Pokemon</Link>
+
+
+

A diferencia de <a>:

+
    +
  • no recarga la página
  • +
  • React cambia el componente visible
  • +
+
+
+

Parámetros dinámicos

+

Podemos crear rutas dinámicas.

+

Ejemplo:

+
/pokemon/25
 /pokemon/7
-

Definición de la ruta:

-
<Route path="/pokemon/:id" element={<PokemonDetail />} />
-
-

useParams

-

Para acceder al parámetro utilizamos el hook useParams de React Router.

-
import { useParams } from "react-router-dom";
+          

Definición de la ruta:

+
+
+
<Route path="/pokemon/:id" element={<PokemonDetail />} />
+
+
+
+

useParams

+

Para acceder al parámetro utilizamos el hook useParams de React Router.

+
+
+
import { useParams } from "react-router-dom";
 
 function PokemonDetail() {
 
@@ -815,68 +1047,88 @@ 

useParams

return <p>Pokemon {id}</p>; -}
-

Este parámetro puede utilizarse para realizar peticiones a una API.

-
-
-
-
-

Context API

-

En aplicaciones grandes aparece un problema frecuente.

-

Muchos componentes necesitan acceder a la misma información.

-

Por ejemplo:

-
    -
  • usuario
  • -
  • tema visual
  • -
  • idioma
  • -
  • configuración
  • -
-

Si pasamos la información mediante props, los datos deben atravesar muchos componentes.

-

Representación conceptual:

-
App
+}
+ + +

Este parámetro puede utilizarse para realizar peticiones a una API.

+
+ + +
+

Context API

+

En aplicaciones grandes aparece un problema frecuente.

+

Muchos componentes necesitan acceder a la misma información.

+

Por ejemplo:

+
    +
  • usuario
  • +
  • tema visual
  • +
  • idioma
  • +
  • configuración
  • +
+

Si pasamos la información mediante props, los datos deben atravesar muchos componentes.

+

Representación conceptual:

+
App
  └ Layout
     └ Page
        └ Component
-

Si todos necesitan user, debemos pasar la prop continuamente.

-

Este problema se conoce como prop drilling.

-
-

Context

-

React proporciona una solución llamada Context.

-

Context permite compartir información entre múltiples componentes sin pasar props manualmente.

-

El proceso tiene tres pasos:

-
    -
  1. Crear el contexto
  2. -
  3. Proveer el contexto
  4. -
  5. Consumir el contexto
  6. -
-
-

Crear un contexto

-
import { createContext } from "react";
+        

Si todos necesitan user, debemos pasar la prop continuamente.

+

Este problema se conoce como prop drilling.

+
+

Context

+

React proporciona una solución llamada Context.

+

Context permite compartir información entre múltiples componentes sin pasar props + manualmente.

+

El proceso tiene tres pasos:

+
    +
  1. Crear el contexto
  2. +
  3. Proveer el contexto
  4. +
  5. Consumir el contexto
  6. +
+
+

Crear un contexto

+
+
+
import { createContext } from "react";
 
-const UserContext = createContext();
-

Esto crea un contenedor que puede almacenar información compartida.

-
-
-

Provider

-

El Provider permite que los componentes hijos accedan al contexto.

-
<UserContext.Provider value={user}>
+const UserContext = createContext();
+
+
+

Esto crea un contenedor que puede almacenar información compartida.

+
+
+

Provider

+

El Provider permite que los componentes hijos accedan al contexto.

+
+
+
<UserContext.Provider value={user}>
 
   <App />
 
-</UserContext.Provider>
-

Todos los componentes dentro del Provider pueden acceder al valor.

-
-
-

Consumir el contexto

-

Para acceder al contexto utilizamos el hook useContext.

-
import { useContext } from "react";
+</UserContext.Provider>
+
+
+

Todos los componentes dentro del Provider pueden acceder al valor.

+
+
+

Consumir el contexto

+

Para acceder al contexto utilizamos el hook useContext.

+
+
+
import { useContext } from "react";
 
-const user = useContext(UserContext);
-

El componente obtiene directamente el valor almacenado en el contexto.

-
-
-

Ejemplo completo

-
import { createContext, useContext } from "react";
+const user = useContext(UserContext);
+
+
+

El componente obtiene directamente el valor almacenado en el contexto.

+
+
+

Ejemplo completo

+
+
+
import { createContext, useContext } from "react";
 
 const UserContext = createContext();
 
@@ -901,279 +1153,283 @@ 

Ejemplo completo

return <h1>{user.name}</h1>; -}
+}
+
+
-
-
-
+ + + -
- - + } else { + return undefined; + } + }; + var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]'); + for (var i = 0; i < bibliorefs.length; i++) { + const ref = bibliorefs[i]; + const citeInfo = findCites(ref); + if (citeInfo) { + tippyHover(citeInfo.el, function () { + var popup = window.document.createElement('div'); + citeInfo.cites.forEach(function (cite) { + var citeDiv = window.document.createElement('div'); + citeDiv.classList.add('hanging-indent'); + citeDiv.classList.add('csl-entry'); + var biblioDiv = window.document.getElementById('ref-' + cite); + if (biblioDiv) { + citeDiv.innerHTML = biblioDiv.innerHTML; + } + popup.appendChild(citeDiv); + }); + return popup.innerHTML; + }); + } + } + }); + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/docs/pages/Bloque3/ReactIV.pdf b/docs/pages/Bloque3/ReactIV.pdf index 5cc2d46..bbe3f73 100644 Binary files a/docs/pages/Bloque3/ReactIV.pdf and b/docs/pages/Bloque3/ReactIV.pdf differ diff --git a/docs/pages/Bloque3/ps.html b/docs/pages/Bloque3/ps.html index 5fab2a4..0677f46 100644 --- a/docs/pages/Bloque3/ps.html +++ b/docs/pages/Bloque3/ps.html @@ -544,8 +544,32 @@