React
React
React
SCRUM
SCRUM
1. SCRUM
2. EL EQUIPO
3. EVENTOS
4. ARTEFACTOS
5. HERRAMIENTAS
REACT
React es una herramienta muy usada en el desarrollo del lado del cliente, no
solamente en Facebook, sino también en miles de páginas y aplicaciones
web como BBC, Airbnb, Netflix, Dropbox entre otras..
Es una evolución natural para aquellos que quieren llegar más lejos de lo
que permiten otras librerías más básicas, como jQuery.
https://es.react.dev/
REACT
Características
Los componentes tienen dos formas de modela los datos, las props y los
states. Ambos nos permiten manejar la información en los componentes.
Las props son como argumentos que pasas a una función. Le permiten a
un componente padre pasar datos a un componente hijo y personalizar
su apariencia. Por ejemplo, un componente Form puede pasar una prop
color a un componente Button.
https://nodejs.org/en/
node -v
Vs Code
https://code.visualstudio.com/
Sublime Text
https://www.sublimetext.com/
Para crear nuestra primer aplicación debemos abrir una ventana de símbolo de sistema de
node.js en Ms. Windows o una ventana de terminal en Linux o iOS.
Lo primero será instalar React CLI, y posteriormente crear la aplicación, tenemos dos
opciones:
Opción 1 Opción 2
npm install -g create-react-app npx create-react-app <carpeta-destino>
create-react-app <carpeta-destino> npx create-react-app <nombre-app>
npm start
public/
- index.html -> Este es el archivo HTML principal donde se monta tu
aplicación React; otros recursos estáticos pueden ser colocados aquí.
src/
- App.css -> Archivo CSS para estilizar el componente App.
- App.js -> Componente principal de tu aplicación.
- index.css -> Archivo CSS global para tu aplicación.
- index.js -> Punto de entrada principal de tu aplicación React.
- reportWebVitals.js -> Mide el rendimiento de la aplicación.
DESCRIPCIÓN DE ARCHIVOS
React puede llevar a cambiar la forma de pensar en los diseños que ves y las aplicaciones
que construyes.
Cuando construyes una interfaz de usuario (UI) con React, primero la separarás en piezas
denominadas componentes. Luego, describirás los diferentes estados visuales para cada
uno de tus componentes. Para finalizar, conectarás tus componentes de forma tal que los
datos fluyan por ellos. En este ejemplo, te guiaremos en el proceso de pensamiento para
construir una tabla de datos de productos con una funcionalidad de búsqueda usando
React.
PENSANDO EN REACT
Iniciamos con un boceto el cuál analizamos para definir su diseño y
funcionalidad.
Este marcado representa un artículo, su encabezado, y una tabla de contenidos representada como una lista
ordenada.
Lo que ve el navegador
Nota la diferencia de mayúsculas y minúsculas:
<section> está en minúsculas, por lo que React sabe
que nos referimos a una etiqueta HTML.
<Profile /> comienza con una P mayúscula, por lo que
React sabe que queremos usar nuestro componente
llamado Profile.
DESCRIPCIÓN DE LA UI
Anidar y organizar componentes
Puedes tener múltiples componentes en el mismo archivo. Esto es
conveniente cuando los componentes son relativamente
pequeños o están estrechamente relacionados entre sí.
Actualmente en el ejemplo nuestro componente reside en un archivo de componente raíz, llamado App.js. No
obstante, dependiendo de tu configuración, el componente raíz podría estar en otro archivo.
¿Y si quisieras cambiar la pantalla de inicio en el futuro y poner allí una lista de libros científicos? ¿O ubicar todos
los perfiles en otro lugar? Tiene sentido mover Gallery y Profile fuera del componente raíz. Esto los haría más
modulares y reutilizables en otros archivos. Puedes mover un componente en tres pasos:
Se puedes usar uno o ambos en el mismo archivo, pero un archivo no puede tener más de un export por
defecto; sin embargo puede tener tantos exports con nombre como sea necesario.
DESCRIPCIÓN DE LA UI
Cómo exportas un componente dicta la forma en que debes importarlo. ¡Tendrás un error si intentas importar
un export por defecto de la misma forma que lo harías con un export con nombre! Este cuadro te puede ayudar
a recordarlo.
Cuando escribes un import por defecto puedes poner cualquier nombre después de import. Por ejemplo,
podrías escribir en su lugar import Banana from './Button.js' y aun así te daría el mismo export por defecto. En
cambio, con los imports con nombre, tiene que haber una correspondencia con los nombres en ambos lados.
¡Por eso se llaman exports con nombre!
DESCRIPCIÓN DE LA UI
Marcado con JSX
JSX es una extensión de sintaxis para JavaScript que permite escribir marcado similar a HTML dentro de una
archivo JavaScript. Aunque hay otras formas de escribir componentes, la mayoría de los desarrolladores de
React prefieren JSX, y la mayoría de las bases de código lo usan.
La Web se ha construido sobre HTML, CSS, y JavaScript. Durante mucho t¿tiempo, los desarrolladores web
mantuvieron el contenido en HTML, el diseño en CSS, y la lógica en JavaScript, ¡a menudo en archivos
separados!. El contenido se marcó dentro del HTML mientras que la lógica de la pagina vivía por separado en
JavaScript
DESCRIPCIÓN DE LA UI
Para devolver múltiples elementos de un componente, envuélvelos con una sola etiqueta principal.
Por ejemplo, puedes usar un <div>
Si no deseas agregar un
<div> a tu marcado, puedes
escribir <> y </> en su
lugar,
JSX requiere que las etiquetas se cierren explícitamente: las etiquetas de cierre automático como <img> deben
convertirse en <img />, y etiquetas envolventes como <li>naranjas deben convertirse como <li>naranjas</li>.
JSX se convierte en JavaScript y los atributos escritos en JSX se convierten en keys de objetos JavaScript. En tus
propios componentes, a menudo vas a querer leer esos atributos en variables. Pero JavaScript tiene limitaciones
en los nombres de variables.
Por ejemplo, sus nombres no pueden contener guiones ni ser palabras reservadas como class.
Por eso, en React, muchos atributos HTML y SVG están escritos en camelCase. Por ejemplo, en lugar de stroke-
width usa strokeWidth o en lugar de class usamos className.
DESCRIPCIÓN DE LA UI
JavaScript en JSX con llaves
JSX permite escribir marcas similares a HTML dentro de un archivo JavaScript, manteniendo la lógica de
renderizado y el contenido en el mismo lugar. A veces requerimos agregar un poco de lógica JavaScript o hacer
referencia a una propiedad dinámica dentro de ese marcado. En esta situación, puedes usar llaves en tu JSX
para abrir una ventana a JavaScript.
Cualquier expresión JavaScript funcionará entre llaves, incluidas las llamadas a funciones
DESCRIPCIÓN DE LA UI
Dónde usar llaves
Como texto directamente dentro de una etiqueta JSX: <h1>Lista de tareas pendientes de {name}</h1>
funcionará, pero <{tag}>Lista de tareas pendientes de Gregorio Y. Zara</{tag}> no lo hará.
Como atributos inmediatamente después del signo =: src={avatar} leerá la variable avatar, pero src="
{avatar}" pasará el string "{avatar}".
DESCRIPCIÓN DE LA UI
Usando «llaves dobles»: CSS y otros objetos en JSX
Nota:
Las props son los datos que se pasan a un elemento JSX. Por
ejemplo, className, src, alt, width y height son algunas de las
props que se pueden pasar a un elemento <img>
Las props que podemos utilizar con una etiqueta <img> están
predefinidas (ReactDOM se ajusta al estándar HTML). También
podemos definir props a tus propios componentes, para
personalizarlos.
DESCRIPCIÓN DE LA UI
Props personalizadas
Podemos asignar un valor predeterminado para una prop en caso de que no se especifique ningún valor,
puedes hacerlo mediante la desestructuración colocando = seguido del valor predeterminado justo después
del parámetro
Ahora, si renderizas <Avatar person={...} /> sin la prop size, el valor de size se establecerá automáticamente en
100.
El valor predeterminado sólo se utilizará si falta la prop size o si se pasa size={undefined}. Sin embargo,
si se pasa size={null} o size={0}, el valor predeterminado no se aplicará.
DESCRIPCIÓN DE LA UI
Reenviar props con la sintaxis de propagación JSX
A veces, pasar props se vuelve extenso; no hay ningún problema en tener código extenso ya que puede ser
más legible. Sin embargo, en ocasiones, es posible ser más conciso. Algunos componentes reenvían todas sus
props a sus hijos, como lo hace Profile con Avatar. Dado que no utilizan directamente ninguna de sus props,
tiene sentido utilizar una sintaxis de «propagación» más corta.
DESCRIPCIÓN DE LA UI
Pasar JSX como hijos
En el ejemplo anterior, controlamos qué árbol JSX era devuelto por el componente.
Es posible que ya hayas notado alguna duplicación en la salida de la renderización; aunque esta duplicidad no
es perjudicial, podría hacer que tu código sea más difícil de mantener.
¿Qué pasa si quieres cambiar el className? ¡Tendrías que hacerlo en dos lugares en tu código! En tal situación,
podrías incluir condicionalmente un poco de JSX para hacer tu código más DRY.
DESCRIPCIÓN UI
Operador condicional (ternario) (? :)
Este operador lo podemos ver como un if en una línea y nos permite reducir código, haciéndolo más legible y
compacto.
si isPacked es verdadero, entonces (?) renderiza name + ' ✔’, de lo contrario (:) renderiza name
DESCRIPCIÓN UI
Operador condicional (ternario) (? :)
Digamos que queremos envolver el texto del elemento completado en otra etiqueta HTML, como <del> para
tacharlo. Podemos añadir aún más líneas nuevas y paréntesis para que sea más fácil anidar más JSX en cada
uno de los casos
DESCRIPCIÓN UI
Renderizando listas
A menudo necesitamos mostrar muchos componentes similares de una colección de datos. Puedes usar los
métodos de array de JavaScript para manipular un array de datos. Usaremos filter() y map() con React para
filtrar y transformar tu array de datos en un array de componentes.
La única diferencia entre estos elementos de la lista es su contenido, sus datos. Generalmente necesitaremos
mostrar muchas instancias del mismo componente usando diferentes datos cuando construyas interfaces:
desde listas de comentarios a galerías de fotos de perfiles. En estas situaciones, puedes guardar estos datos en
objetos de JavaScript y arrays, y usar métodos como map() y filter() para renderizar listas de componentes
desde ellos.
DESCRIPCIÓN UI
Renderizando listas
Algunas funciones de JavaScript son puras. Las funciones puras solo realizan un cálculo y nada más. Al escribir
estrictamente componentes como funciones puras, evitamos una clase completa de errores desconcertantes y
un comportamiento impredecible a medida que crece el código. Sin embargo, para obtener estos beneficios,
hay algunas reglas que debes seguir.
En informática (y especialmente en el mundo de la programación funcional), una función pura es una función
con las siguientes características:
Se ocupa de sus propios asuntos. No cambia ningún objeto o variable que existiera antes de ser llamado.
Las mismas entradas, la misma salida. Dadas las mismas entradas, una función pura siempre debe
devolver el mismo resultado.
Es posible que ya estés familiarizado con un ejemplo de funciones puras: fórmulas en matemáticas.
Considera esta fórmula matemática: y = 2x.
DESCRIPCIÓN UI
Ejercicio
Algunos componentes en pantalla se actualizan en respuesta a la entrada del usuario. Por ejemplo, hacer clic
en una galería de imágenes cambia la imagen activa. En React, los datos que cambian con el tiempo se
denominan state. Puedes agregar state a cualquier componente y actualizarlo según sea necesario.
Responder a eventos
React permite agregar controladores de eventos a tu JSX. Los controladores de eventos son tus propias
funciones que se activarán en respuesta a las interacciones del usuario, como hacer clic, pasar el mouse,
enfocarse en las entradas de un formulario, entre otros.
Los componentes integrados como <button> solo admiten eventos de navegador integrados como onClick. Sin
embargo, también puedes crear tus propios componentes y darle a sus props de controladores de eventos los
nombres específicos de la aplicación que desees.
AGREGAR INTERACTIVIDAD
Respondiendo a eventos
NOTAS:
El uso de Children es poco común y puede conducir
a un código frágil.
Requiere de: import { Children } from 'react';
AGREGAR INTERACTIVIDAD
El state: la memoria de un componente
Los componentes a menudo necesitan cambiar lo que aparece en la pantalla como resultado de una
interacción. Escribir en el formulario debería actualizar el campo de entrada, hacer clic en «siguiente» en un
carrusel de imágenes debería cambiar la imagen que se muestra, hacer clic en «comprar» pone un producto en
el carrito de compras.
Los componentes necesitan «recordar» cosas: el valor de entrada actual, la imagen actual, el carrito de
compras. En React, este tipo de memoria específica del componente se llama state.
Podemos agregar state a un componente con un useState Hook. Los Hooks son funciones especiales que
permiten que tus componentes usen funciones de React (el state es una de esas funciones). El Hook useState
te permite declarar una variable de state. Toma el estado inicial y devuelve un par de valores: el estado actual y
una función de establecimiento de state que te permite actualizarlo.
AGREGAR INTERACTIVIDAD
Entendiendo los hook
const [contador,setContador]=useState(0)
Antes de que los componentes se muestren en la pantalla, deben ser renderizados por React. Comprender los
pasos de este proceso nos ayudará a pensar en cómo se ejecuta el código y explicar su comportamiento.
Imagina que tus componentes son cocineros en la cocina, montando sabrosos platos a partir de los
ingredientes. En este escenario, React es el camarero que hace las peticiones de los clientes y les trae sus
pedidos. Este proceso de solicitud y servicio de UI tiene tres pasos:
1. Desencadenamiento de un renderizado (entrega del pedido del cliente a la cocina)
2. Renderizado del componente (preparación del pedido en la cocina)
3. Confirmación con el DOM (poner el pedido sobre la mesa)
AGREGAR INTERACTIVIDAD
AGREGAR INTERACTIVIDAD
El estado como una instantánea
A diferencia de las variables regulares de JavaScript, el estado de React se comporta más como una
instantánea. Establecerlo no cambia la variable de estado que ya tienes, sino que activa una nuevo
renderizado.
AGREGAR INTERACTIVIDAD
AGREGAR INTERACTIVIDAD
Actualizar arrays en el estado
Los arrays son otro tipo de objetos de JavaScript mutables que puedes almacenar en el estado y debes tratar
como de solo lectura. Al igual que con los objetos, cuando deseas actualizar un array almacenado en el estado,
se debe crear uno nuevo (o hacer una copia de uno existente) y luego configurar el estado para utilizar el
nuevo array.
AGREGAR INTERACTIVIDAD
AGREGAR INTERACTIVIDAD
Ejercicio
HTTPS://ES.REACT.DEV/