#30DaysOfReact
Felicitaciones por unirse a #30DaysOfReact, vamos a estar intensivamente estudiando React junto con el ecosistema que le rodea.
La idea es estudiar una pieza corta de material día a día y practicar para poder aprender o reforzar conceptos sobre React y otras herramientas relacionadas.
Sugerencias
- Inicialmente vamos a tomar como referencia este post de Kent C. Dodds, recomendamos leerlo antes de iniciar: https://kentcdodds.com/blog/how-to-react
- Es importante asumir el compromiso, una buena técnica para lograr esto es hacer público el proceso, recomendamos hacer un Tuit, post en LinkedIn o Facebook con cada uno de los materiales y un comentario, usando también el hashtag
#30DaysOfReact
y#reactCostaRica
así le damos un poco de visibilidad a la comunidad😉 - Es buena idea aparte de publicar el avance, recuperar notas importantes o porciones de código que podamos reutilizar en el futuro, para esto sería buena idea utilizar GitHub para llevar el seguimiento del código que hagamos.
- Notion.so también es una muy buena herramienta para llevar notas. Para un nivel extra de aprovechamiento, podríamos publicar lo que vayamos aprendiendo en Dev.to o en alguna plataforma para blogs.
- Si perdemos un día o dos no es problema siempre y cuando nos pongamos al día. Si se puede. 💪🏽
Agradecimientos especiales
Bitácora
Día 1: Preparación
El día uno consiste en revisar a alto nivel el material que vamos a estudiar, recuperar algunos links, ejemplos, crear notas y un proyecto en GitHub para manejar los ejemplos.
También es un buen día para invitar a otros colegas a unirse.
Día 2: JavaScript para React - Closures
Durante el día 2 es buena idea repasar aspectos básicos de JavaScript y su funcionamiento. Siempre vale la pena aprender o recordar detalles importantes sobre qué es un Closure en JavaScript, cómo funciona y en que casos se aplica.
Contenido recomendado:
- What The fork is a Closure por Dan Abramov
- Scope and Closures por Kyle Simpson
- What is a Closure por Eric Elliot
Día 3: JavaScript para React - Abstracción
Según Wikipedia, la abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación es importante saber cuando abstraer y cuál es la mejor manera de hacerlo para evitar repetir el código pero al mismo tiempo no caer en la trampa de sobre-complicar las cosas.
Contenido recomendado:
- Abstraction and Composition por Eric Elliot
- AHA Programming por Kent C. Dodds
- AHA Programming Talk por Kent C. Dodds
Día 4: JavaScript para React - Conceptos fundamentales
El día 4 está dedicado completamente al repaso de conceptos fundamentales: el funcionamiento del browser, el funcionamiento del Event Loop y los conceptos más básicos de JavaScript en pocas palabras.
Contenido Recomendado:
- So How does the Browser Actually Render a Website por Ryan Seddon
- What The Heck is The Event Loop Anyway? por Philip Roberts
- The Fundamentals - JS por Wes Bos y Scott Tolinski
Día 5: JavaScript para React - Características modernas de JavaScript para React
Una de las ventajas de React es funcionar tan de cerca a JavaScript sin necesidad de templates. Es por eso que es importante familiarizarse con el lenguaje, en especial con caracteristicas modernas. El día 5 esta dedicado al repaso de estas características.
Contenido Recomendado:
Día 6: Hola Mundo de React
Cuando creamos aplicaciones utilizamos abstracciones y no siempre es claro lo que sucede por debajo. En el día 6 vamos a explorar las bases de la creación de componentes en React. Posiblemente a la hora de escribir nuestras aplicaciones vayamos a utilizar una estrategia diferente sin embargo conocer las bases es importante para tener un conocimiento sólido sobre React o cualquier otra tecnología.
Contenido Recomendado:
- Super Simple Start to React por Kent C. Dodds
- The Beginner's Guide to React - Introduction
- Create a User Interface with Vanilla JavaScript and DOM
- Create a User Interface with React’s createElement API
Día 7: Crear un generador de escalas musicales con React
En el día 7 vamos a generar nuestra primera aplicación. Esta debe generar escalas musicales que consistiran en una serie de botones que emitiran la nota correspondiente. Utilizaremos JSX, Create React App y Tone.js.
Contenido Recomendado:
Ejercicio
Día 8: React Router
En el día 8 vamos a crear nuestro propio React Router para entender de manera profunda su funcionamiento.
Contenido Recomendado:
Día 9: Manejo del estado de la aplicación
React es todo lo que necesitas para manejar el estado de tu aplicación.
Contenido Recomendado:
Día 10: Componentes y estilos CSS
En el día 10 veremos las mejores estrategias para organizar y aplicar estilos a nuestros componentes en react.
Contenido Recomendado:
Día 11: TailwindCSS y React
Seguimos con el manejo de estilos css en nuestras aplicaciones de React. En el día 11 exploraremos TailwindCSS. Ciertamente no es necesario conocer Tailwind para crear una aplicación con React pero vale mucho la pena.
Contenido Recomendado:
- Introducción a TailwindCSS por Alfredo Bonilla
- Setting Up Tailwind CSS In A React Project por Blessing Krofegha
Día 12: Repaso de CSS - CSS Grid
En el día 12 vamos a iniciar un repaso sobre las funcionalidades modernas de CSS para poder aplicarlas a nuestros componentes de React.
Contenido Recomendado:
- A Complete Guide to Grid
- CSS Grid Changes Everything por Morten Rand-Hendriksen
- CSS Grid Tutorial por FollowAndrew
- Learn CSS Grid por Jonathan Suh
Día 13: Repaso de CSS - Flexbox
Flexbox ayuda a distribuir el espacio entre los ítems de una interfaz y mejorar las capacidades de alineación. Es definivitamente una característica que debemos usar.
Contenido Recomendado
- A Complete Guide to Flexbox
- Flexbox in 20 minutes por Brad Traversy
- Flexbox vs Grid CSS por Jen Simmons
- Flexbox + CSS Grid por Jen Simmons
Día 14: Listas en React
Renderizar listas en React es bastante sencillo sin embargo tiene sus particularidades.
Contenido Recomendado
Día 15: React Hooks - Use State
Los hooks vienen a cambiar la manera de escribir aplicaciones en React. Permiten poder utilizar el estado si necesidad de escribir una clase, entre otras cosas.
Contenido Recomendado
Contenido extra
Día 16: Forms en React
Los formularios son quizás la caraterística más común y de las más importantes en la web. Los elementos de formularios en HTML funcionan un poco diferente a otros elementos del DOM en React, debido a que los elementos de formularios conservan naturalmente algún estado interno.
Contenido Recomendado
Día 17: Manejo de efectos secundarios con useEffect
Aparte de los cambios del estado pueden suceder otras cosas a la hora de renderizar un componente en React. Con useEffect podemos manejar la ejecución de los efectos secundarios.
Contenido Recomendado
- Usando useEffect
- A Complete Guide to useEffect por Dan Abramov
- The Iceberg of React Hooks por Alejandro Solidze
- Hook Flow por Donavon West
Día 18: Explorando useMemo, useCallback y useRef en React
Algunas veces es necesario hacer algunos ajustes para mejorar el rendimiento de nuestras aplicaciones y existen herramientas que podemos utilizar sin embargo no siempre es necesario e incluso podría ser perjudicial.
Contenido Recomendado
- Explore the useMemo, useContext and useRef Hooks in React por chantastic
- When to useMemo and useCallback by Kent C. Dodds
Día 19: useContext & useReducer
Context provee una forma de pasar datos a través del árbol de componentes sin tener que pasar props manualmente en cada nivel. También podemos combinarlo con otros hooks como useReducer como estrategia para el manejo del estado de nuestra aplicación
- Context
- React Hooks useContext por Ben Awad
- useContext() + useReducer() = Magic? por Maximilian Schwarzmüller
- React Hooks - A deeper dive featuring useContext and useReducer por Austin Johnston
Día 20: useReducer
En el día 20 continuamos repasando el hook useReducer, muy útil para cambios complejos en el estado de un componente.
Contenido Recomendado
- Should I useState or useReducer? por Kent C. Dodds
- Why I Love useReducer por Harry Wolf
- The useReducer Hook by Dave Ceddia
Día 21: Patrones avanzados - Compound Components
Iniciamos estudiando los patrones avanzados de componentes en React. Por medio del patrón de componentes compuestos podemos lograr que uno o varios componentes trabajen en conjunto para lograr una tarea en específico.
Contenido Recomendado
Día 22: Principio de Inversión de Control
El principio de inversión de control nos puede ayudar a mejorar nuestro código reutilizable.
Contenido Recomendado
Día 23: Repaso de programación funcional
Vamos a tomar algunos días para repasar programación funcional lo cual será de ayuda para pensar mejor a la hora de escribir código JavaScript y por ende a la hora de construir aplicaciones React.
Contenido Recomendado
Día 24: Programación funcional - Funciones de Orden Superior
En matemáticas y ciencias de la computación funciones de orden superior son funciones que cumplen al menos una de las siguientes condiciones:
- Tomar una o más funciones como entrada
- Devolver una función como salida
Contenido Recomendado
Día 25: Introducción a TypeScript con React
TypeScript es un super set de JavaScript, es decir extiende su funcionalidad. TypeScript permite tener tipado estático y funciona muy bien para capturar errores antes del proceso de ejecución. Además ayuda muchísimo a darle más legibilidad al código.
Contenido Recomendado
Día 26: Empezando con NextJS
Next.js es un framework de React que permite implementar fácilmente server side rendering entre muchas otras cosas más. En este día vamos a empezar a crear una aplicación para poner en práctica los conceptos aprendidos.
Contenido Recomendado
Día 27: Cheatsheet de TypeScript + React
TypeScript es especialmente útil en React para definir los tipos de las props que se utilizarán en un componente. Con esta guía será muy sencillo entender el concepto y aplicarlo.
Contenido Recomendado
Día 28: Front End Unit Testing
Las pruebas unitarias son el respaldo que vamos a tener para asegurarnos que los cambios que hagamos no estén quebrando otra parte del sistema que estamos actualizando. Vale mucho la pena acostumbrarse a escribirlas adecuadamente.
Contenido Recomendado
Día 29: Reto - Acortdor de URLs
Crear un acortador de URLs desde 0 utilizando NextJS.
Contenido Recomedado
Día 30: Reto - Crear una Dapp con React
Las aplicaciones descentralizadas también conocidas como aplicaciones web3 son aplicaciones web que interactúan con una blockchain y tienen algunas particularidades.