====== Desarrollo de aplicaciones web con React 18 ====== Notas del curso **Desarrollo de aplicaciones web con React 18** del Clúster Tic de Galicia. * Horas: 60 * Fecha Inicio: 13/02/2024 * Fecha Fin: 09/04/2024 ===== Objetivos ===== Si ya conoces bien JavaScript/ECMAScript, esta formación te permite aprender React desde cero, de forma progresiva, práctica y directa al grano. Pero, como en todos nuestros cursos, sin limitarnos a darte "recetas": comprenderás bien los conceptos que hay debajo de cada técnica para que puedas aplicarlos en cualquier situación. Eso sí, tendrás que trabajar y practicar. Este curso es exigente, pero si lo completas dominarás React y sus principales tecnologías relacionadas. En sus más de 100 lecciones, aprenderás, entre otras muchas cosas: * Conceptos previos importantes: ciclo de vida de componentes, efectos secundarios, funciones puras, map/reduce, clases de orden superior, reactividad... * Puesta en marcha de un entorno de desarrollo apropiado para React. * Creación de proyectos React con Vite y sus dependencias. * Uso de las herramientas de desarrollo específicas de React. * Arquitectura y lógica de componentes de React: componentes en forma de clases y en forma de función, sintaxis JSX, renderizado, renderizado condicional, propiedades y estado, composición de componentes, ranuras de contenido, componentes de orden superior (HOC)... * Gestión de eventos, gestión de estado con hooks, transmisión de estado entre componentes, contexto global...Desarrollo y validación de formularios con React. * Gestión del estado con Redux a fondo: conceptos base, slices, selectores, dispatchers, thunks, middlewares, interacciones... * Consumo y uso de APIs: comunicación directa, el hook useEffect, comunicaciones con Redux, thunks asíncronos, consultas y mutaciones con RTK Query, invalidación de cachés... * Aplicación de estilos a componentes con Tailwind CSS. * Navegación entre componentes y páginas con React Router. * Seguridad en aplicaciones React: autenticación y autorización, inicios y cierres de sesión, protección de páginas, JSON Web Tokens (JWT)... * Renderización de React en el servidor (SSR), Next.js. * Despliegue de apps React para la Web (Vercel). * Apps móviles para iOS y Android con React Native y Expo. ===== Temario ===== * Módulo 1: [[informatica:programacion:cursos:desarrollo_web_react_18:conceptos_previos_fundamentales|Conceptos previos fundamentales]] * Módulo 2: [[informatica:programacion:cursos:desarrollo_web_react_18:primeros_pasos_react|Primeros pasos con React]] * Módulo 3: [[informatica:programacion:cursos:desarrollo_web_react_18:logica_de_componentes|Lógica de componentes]] * Módulo 4: [[informatica:programacion:cursos:desarrollo_web_react_18:gestion_eventos_manejo_estado|Gestión de eventos y manejo del estado]] * Módulo 5: [[informatica:programacion:cursos:desarrollo_web_react_18:contenedor_estado_redux|El contenedor de estado Redux]] * Módulo 6: [[informatica:programacion:cursos:desarrollo_web_react_18:comunicacion_interaccion_servidor|Comunicación e interacción con el servidor]] * Módulo 7: [[informatica:programacion:cursos:desarrollo_web_react_18:cuestiones_adicionales_avanzadas|Cuestiones adicionales y avanzadas]] * Módulo 8: [[informatica:programacion:cursos:desarrollo_web_react_18:despliegue_ssr_aplicaciones_moviles|Despliegue, SSR, aplicaciones móviles]] ===== Tests ===== ==== Fundamentos de React ==== **¿Qué ventaja tiene Vite sobre Webpack?** * Es más rápido gracias a los módulos ECMAScript (**correcto**) * Verifica la corrección del código * Webpack no puede servir aplicaciones React * No ofrece ninguna ventaja, son herramientas diferentes **¿Qué quiere decir la "D" en el acrónimo DHTML?** * Dynamic (**correcto**) * Document * Daemon * Durable **¿Para qué sirve un contexto de React?** * Para mantener un estado global al que pueden acceder diversos componentes (**correcto**) * Para modificar el estilo del sitio web * Para reutilizar componentes en distintos lugares del sitio * Para gestionar eventos como click o submit **¿Qué es el estado de un componente?** * El conjunto de datos que se pueden preservar de un renderizado a otro (**correcto**) * La lista de propiedades que reciben como parámetro * Los componentes de React no pueden tener estado propio * El contenido de los valores del formulario **En sintaxis JSX, ¿cómo crearías un enlace con clase CSS resaltado y texto Ejemplo?** * ''%%Ejemplo%%'' (**correcto**) * ''%%%%'' * ''%%Ejemplo%%'' * ''%%%%'' ==== Redux y Comunicaciones ==== **¿Qué es un reducer?** * Un objeto JavaScript que describe un evento que debe modificar el estado de la aplicación * Una función que toma el estado actual y lo actualiza con la nueva información (**correcto**) * Un objeto que almacena todo el estado global * Una sección que implementa el comportamiento y la gestión del estado de una parte de la aplicación **¿Cuál es el propósito de una operación mutation en una API slice definida con RTK Query?** * Exclusivamente consultar datos del servidor * Consultar o modificar datos en el servidor * Exclusivamente modificar datos en el servidor (**correcto**) * Enviar consultas SQL a una base de datos **¿Cuáles de las siguientes operaciones puede efectuarse dentro de un thunk?** * Consultar cualquier dato del almacén (**correcto**) * Despachar otras acciones (**correcto**) * Modificar el estado interno de un componente * Modificar el estado del almacén **Si en la //slice// con nombre "tareas" creamos un reducer llamado ''eliminada'', ¿cuál será el tipo de la acción correspondiente?** * "tareas/eliminada" (**correcto**) * "tareas.eliminada" * "eliminada/tareas" * "eliminada.tareas" **¿En qué lugar del código podemos definir el estilo de un elemento cuando utilizamos Tailwind CSS?** * En las clases CSS (propiedad ''className'') (**correcto**) * En funciones gestoras de eventos * En las propiedades del componente * Como un objeto denominado ''styles'' en el fichero del componente ==== Cuestiones adicionales y avanzadas ==== **En React Router, ¿cómo llamamos a la función que se ejecuta al enviar un formulario desde una ruta?** * loader * action (**correcto**) * fetch * form **¿Para qué sirve el componente '''' de React Router?** * Para mostrar el componente correspondiente a la ruta anidada dentro del de la ruta ascendiente (**correcto**) * Para mostrar elementos comunes a varias páginas como barras de menú o paneles laterales * Para mostrar páginas de error cuando alguno de los componentes no se pueda cargar * Para enviar formularios sin refrescar la página **¿Podemos mostrar alguna indicación en la página cuando React Router está cargando una nueva ruta?** * Sí, el hook ''useNavigation'' nos da un objeto con información del estado de carga que podemos utilizar (**correcto**) * No, React Router no nos proporciona esa información * Sí, React Router añade transiciones entre páginas automáticamente * No, tendríamos que incluir una biblioteca adicional para detectar los cambios entre rutas **¿Qué funcionalidad incorpora React Router?** * Navegación por diferentes rutas correspondientes a diferentes elementos que se pueden anidar (**correcto**) * Almacenamiento de datos persistente en el navegador * Recuperación de datos desde un servidor * Validación de formularios **¿Qué elemento usarías para forzar la navegación a otra ruta sin necesidad de interacción por parte del usuario?** * '''' * '''' * ''