Mi academia
Curso de React desde cero
#ReactThis

Curso de React desde cero

El único curso que necesitas para aprender React. Desde cero, explicando cada concepto y llegando a las partes más avanzadas para dominar por completo la librería.

Fondo React

Oferta de preventa

Un precio reducido mientras completamos el curso

89249
Acceder ahora

Acceso de por vida. Actualizaciones incluídas.

Escenarios reales

Crear aplicaciones sencillas no es suficiente.

Si quieres manejarte ahí fuera, tienes que ponerte a prueba con escenarios reales, crear proyectos complejos.

Las prácticas finales serán proyectos similares a los que puedes encontrar en cualquier trabajo.

Acceder ahora

Nuestra metodología

El por qué

Entender bien cuál es el problema al que te tienes que enfrentar.

La solución

Entender cuál es la mejor solución para ese problema y cómo aplicarla.

La práctica

Poner a prueba todo lo aprendido, con casos prácticos reales.

Fondo metodología

Aprende en comunidad

No queremos que te enfrentes al curso sin ayuda.

Tendrás acceso a una comunidad de Discord donde podrás plantear tus dudas y te ayudaremos a resolverlas.

Además, podrás encontrar compañeros con los que poder compartir el proceso y crear proyectos.

Acceder ahora

Progreso actual del curso

243lecciones
32.3horas
17secciones

Contenido publicado del curso

Aquí tienes todo el contenido del curso publicado hasta la fecha

  1. 00Introducción
    1. 0.1Requisitos previos
    2. 0.2Chrome y React Developer Tools
    3. 0.3Node JS
    4. 0.4VSCode y extensiones
  2. 01Qué es React
    1. 1.1Por qué React
    2. 1.2Los primeros componentes
    3. 1.3El origen de React y JSX
    4. 1.4Imperativo vs Declarativo
    5. 1.5Cascade updates
    6. 1.6El DOM de Javascript
    7. 1.7El Virtual DOM
    8. 1.8¿Qué es React?
  3. 02Creando el primer proyecto
    1. 2.1El problema de Javascript
    2. 2.2La alternativa de React
    3. 2.3Transpilación y Babel
    4. 2.4Modularización y ES Modules
    5. 2.5Empaquetado, bundles y Webpack
    6. 2.6Por qué no usamos create-react-app
    7. 2.7Creando una app con Vite
    8. 2.8Entendiendo cómo funciona Vite
    9. 2.9Cómo funciona el dev server
    10. 2.10Configurando ESLint
    11. 2.11Configurando Prettier
    12. 2.12Conflictos de Prettier y Eslint
    13. 2.13Subiendo el proyecto a git
  4. 03La sintaxis de JSX
    1. 3.1Qué es una etiqueta JSX
    2. 3.2La propiedad children
    3. 3.3React fragment
    4. 3.4Las props de JSX
    5. 3.5La propiedad style
    6. 3.6className y htmlFor
    7. 3.7defaultValue y defaultChecked
    8. 3.8dangerouslySetInnerHTML
    9. 3.9Custom attributes
    10. 3.10Spread de props y keys
  5. 04Componentes
    1. 4.1Funciones que devuelven JSX
    2. 4.2Componentes y props
    3. 4.3Destructuring de props
    4. 4.4Composición de componentes
    5. 4.5Modularización y nomenclatura
    6. 4.6El componente App
    7. 4.7CSS Modules
    8. 4.8CSS Global
    9. 4.9Renderizado condicional
    10. 4.10Aislar lógica en componentes
    11. 4.11Funciones vs clases
  6. 05Estado y useState
    1. 5.1El renderizado inicial
    2. 5.2Qué es un estado
    3. 5.3useState
    4. 5.4Fases del cambio de estado
    5. 5.5Variables durante el render
    6. 5.6Reglas del estado y los hooks
    7. 5.7El valor inicial
    8. 5.8Profundizando en SetState
    9. 5.9Valor del estado durante el render
    10. 5.10Too many rerenders
    11. 5.11Dónde colocar el estado
    12. 5.12Introducción a múltiples estados
  7. 06Eventos y formularios
    1. 6.1Añadiendo event listeners
    2. 6.2Eliminando event listeners
    3. 6.3SyntheticEvent
    4. 6.4PreventDefault
    5. 6.5Target vs CurrentTarget
    6. 6.6Event bubbling, capturing y stopPropagation
    7. 6.7Formularios no controlados
    8. 6.8Formularios controlados
    9. 6.9Ejemplo con un buscador
  8. 07Lógica, estructura y custom hooks
    1. 7.1Modularizando la lógica
    2. 7.2Responsabilidad única
    3. 7.3Añadiendo nuevos filtros
    4. 7.4Añadiendo lógica de filtrado
    5. 7.5Primitivos, referencias, stack y memoria
    6. 7.6La importancia de las funciones puras
    7. 7.7Componentizar
    8. 7.8Agrupando estados
    9. 7.9Custom hooks
    10. 7.10Más custom hooks
  9. 08Contexto y useContext
    1. 8.1La técnica de prop drilling
    2. 8.2La alternativa de context
    3. 8.3Context provider y useContext
    4. 8.4Valor por defecto del context
    5. 8.5Múltiples context providers
    6. 8.6Las implicaciones de useContext
    7. 8.7Manejo de múltiples contextos
    8. 8.8Context vs prop drilling
  10. 09Side effects y useEffect
    1. 9.1La experiencia de usuario
    2. 9.2Prioridad y side effects
    3. 9.3useEffect
    4. 9.4Las dependencias de useEffect
    5. 9.5Las reglas de los hooks
    6. 9.6ESlint Plugin React Hooks
    7. 9.7No mientas con tus dependencias
    8. 9.8Limpieza de side effects
    9. 9.9El asincronismo
    10. 9.10No todo son side effects
    11. 9.11Desmontado y memory leaks
  11. 10Práctica 1: Gestor de usuarios
    1. 10.1Analizando los requisitos
    2. 10.2Objetivos y metodología
    3. 10.3Los flujos del diseño
    4. 10.4El UI Kit
    5. 10.5Definiendo variables CSS
    6. 10.6Adaptando el código anterior
    7. 10.7UserRole y el uso de variables
    8. 10.8UserStatus y los SVG
    9. 10.9Creando el UserDisplay
    10. 10.10Rematando estilos de UserRow
    11. 10.11Revisando la lógica de filtrado
    12. 10.12El comportamiento en conjunto
    13. 10.13Creando input search
    14. 10.14Rematando el input search
    15. 10.15Creando input checkbox
    16. 10.16Creando el select
    17. 10.17Ajustando los estilos
    18. 10.18Evitando valores mágicos
    19. 10.19Modularizando la lógica
    20. 10.20Planteando la paginación
    21. 10.21Creando UsersListPagination
    22. 10.22Creando el IconButton
    23. 10.23Creando el PageSelector
    24. 10.24Organizando los estados
    25. 10.25JSON Server
    26. 10.26Cargando usuarios con fetch
    27. 10.27Evitando memory leaks
    28. 10.28Modularizando nuestro hook
    29. 10.29Data, loading, error y el UX
    30. 10.30Creando el button
    31. 10.31Creando el input text
    32. 10.32Creando el input text con icono
    33. 10.33Cambiando entre formularios
    34. 10.34Maquetando el formulario de creación
    35. 10.35Controlados o no controlados
    36. 10.36Validando los campos
    37. 10.37Completando las validaciones
    38. 10.38Validaciones asíncronas
    39. 10.39Modularización y memory leaks
    40. 10.40Debounce
    41. 10.41Gestionando el submit
    42. 10.42Submitting
    43. 10.43Separación de responsabilidades
    44. 10.44Separando los fetch
    45. 10.45El orden de presentación
    46. 10.46Custom hooks y responsabilidades
    47. 10.47Complica dentro, simplifica fuera
    48. 10.48Recargando los usuarios
    49. 10.49Form layout
    50. 10.50Edición, borrado y prop drilling
    51. 10.51Formulario de edición
    52. 10.52Adaptando las validaciones
    53. 10.53Adaptando el onSubmit
    54. 10.54Cambiando las props
    55. 10.55Formulario de borrado
    56. 10.56Modularizando
    57. 10.57Creando un contexto
    58. 10.58Aprovechando el return null
    59. 10.59Creando un custom provider
    60. 10.60Organizar los archivos
    61. 10.61Selector de vista
    62. 10.62Creando las cards
    63. 10.63Filtrado y paginación en JSON server
    64. 10.64Paginación desde servidor
    65. 10.65Refetch y las dependencias
    66. 10.66Filtrando desde el servidor
    67. 10.67Un pequeño fix
    68. 10.68Un último refactor
    69. 10.69La accesibilidad
    70. 10.70Actualizando a React 18
    71. 10.71Conclusiones
  12. 11Reducers y useReducer
    1. 11.1Repasando useState
    2. 11.2Los problemas de useState
    3. 11.3Centralizando los setState
    4. 11.4useReducer
    5. 11.5Escribir correctamente un reducer
    6. 11.6Lazy initialization
    7. 11.7useState vs useReducer
  13. 12Práctica 2: Refactor con useReducer
    1. 12.1Revisando los estados sencillos
    2. 12.2Revisando useFilters
    3. 12.3Revisando useEditForm
    4. 12.4Las props y los reducers
    5. 12.5Revisando useCreateForm
    6. 12.6Revisando useSelectedForm
    7. 12.7Revisando useUsers
    8. 12.8Evitando valores mágicos
    9. 12.9Aislando reducers
    10. 12.10Creando action builders
    11. 12.11Más action builders
    12. 12.12Estandarizando el payload
  14. 13Referencias y useRef
    1. 13.1El problema de las variables globales
    2. 13.2Referencias y useRef
    3. 13.3Referencias vs Estados
    4. 13.4El por qué de ref.current
    5. 13.5Usos de las referencias como valor
    6. 13.6Referenciando nodos del DOM
    7. 13.7Asignación de referencias al DOM
    8. 13.8Reenviando refs con forwardRef
    9. 13.9useImperativeHandle
    10. 13.10¿Necesitas una referencia?
  15. 14Más allá del Virtual DOM
    1. 14.1La gestión del Virtual DOM
    2. 14.2Las APIs del navegador
    3. 14.3Intervalos y timeouts
    4. 14.4Los eventos del navegador
    5. 14.5El problema de la jerarquía
    6. 14.6Portales y createPortal
    7. 14.7Cómo funciona createPortal
    8. 14.8Eventos en portales
    9. 14.9La alternativa de los custom events
    10. 14.10Implementando custom events
  16. 15Práctica 3: Referencias, portales y más allá
    1. 15.1Los nuevos requisitos
    2. 15.2Cambios en el diseño
    3. 15.3Actualizando las dependencias
    4. 15.4Nuevos iconos y colores
    5. 15.5Creando el modal
    6. 15.6Creando un modal genérico
    7. 15.7El modal de creación
    8. 15.8Modales de edición y borrado
    9. 15.9Refactorizando el JSX
    10. 15.10Limpiando el código
    11. 15.11Deshabilitando el scroll
    12. 15.12Refactorizando UserActions
    13. 15.13Creando el dropdown
    14. 15.14Manejando el click
    15. 15.15Manejando el click outside
    16. 15.16Añadiendo la foto por defecto
    17. 15.17Generando imágenes de prueba
    18. 15.18Input file y data URL
    19. 15.19Promisificando el file reader
    20. 15.20Enviando la foto al servidor
    21. 15.21Generando la preview
    22. 15.22Validando las imágenes
    23. 15.23Adaptando estilos
    24. 15.24Mejorando la legibilidad
    25. 15.25Input file y referencias
    26. 15.26Rematando el formulario
    27. 15.27Creando las alertas
    28. 15.28Creando custom events
    29. 15.29Modularizando los eventos
    30. 15.30Usando las alertas
  17. 16Técnicas avanzadas de reutilización
    1. 16.1DRY: Don't repeat yourself
    2. 16.2HOFs: Higher order functions
    3. 16.3Extendiendo la funcionalidad
    4. 16.4HOCs: Higher order components
    5. 16.5Flexibilizar el renderizado
    6. 16.6Render props
    7. 16.7Los métodos de Children

Contenido futuro

Esto es una aproximación de algunas de las secciones que se añadirán al curso.

Este listado es simplemente orientativo y puede variar a lo largo del tiempo, añadiendo más contenido.

Enrutado y Single Page Applications

Entender la diferencia entre una web tradicional y una SPA, entender cómo funciona un router y hablar sobre React Router.

HOCs: High Order Components

Qué son los High Order Components y en qué casos tiene sentido aplicarlos.

Lazy y suspense

Cómo aplicar las técnicas de Lazy Loading para dividir nuestro bundle, e incrementar la performance.

Microoptimizaciones en React

Cómo podemos optimizar los renderizados con React.memo, useMemo, useCallback y useLayoutEffect.

SEO y metaetiquetas

Cómo gestionar las meta etiquetas en React, y cómo trabajan los motores de búsqueda con SPAs.

Depuración en React

Qué herramientas tenemos para depurar nuestra aplicación de React. DevTools, Profiles y useDebugValue.

Testing

Cómo debemos testear nuestra aplicación para comprobar que todo funciona correctamente, de forma automática.

Práctica: Librería de componentes

Crearemos una librería de componentes base para cualquier proyecto, con todos los elementos que forman nuestro UI Kit.

Práctica: Reproductor de vídeo

Crearemos un reproductor de vídeo custom. Muchos estados y muchas microoptimizaciones en un único componente.

Proyecto: Crear una red social

Como proyecto final, utilizaremos la librería de componentes y el reproductor de vídeo, para crear un proyecto mucho más ambicioso. Una red social completa, trabajando con un backend real.

Si no te gusta, te devolvemos el dinero.

Garantía de 7 días

Dispondrás de 7 días naturales desde la fecha de compra, para probar el curso.

Si durante estos 7 días no te gusta y decides devolverlo, bastará con que nos envíes un email y te devolveremos el dinero.

Sin preguntas. Sin problemas. Sin trampas.