Antes de empezar
- Cómo está organizado
- Apoya el libro (si quieres)
- Más contenido sobre React (y más)
- Únete a la comunidad de Discord
- Erratas y sugerencias
Principiante
- ¿Qué es React?
- ¿Cuáles son las características principales de React?
- ¿Qué significa exactamente que sea declarativo?
- ¿Qué es un componente?
- ¿Qué es JSX?
- ¿Cómo se transforma el JSX?
- ¿Cuál es la diferencia entre componente y elemento en React?
- ¿Cómo crear un componente en React?
- ¿Qué son las props en React?
- ¿Qué es y para qué sirve la prop
childrenen React? - ¿Qué diferencia hay entre props y state?
- ¿Se puede inicializar un estado con el valor de una prop? ¿Qué pasa si lo haces y qué hay que tener en cuenta?
- ¿Qué es el renderizado condicional en React?
- ¿Cómo puedes aplicar clases CSS a un componente en React y por qué no se puede usar
class? - ¿Cómo puedes aplicar estilos en línea a un componente en React?
- ¿Cómo puedo aplicar estilos de forma condicional a un componente en React?
- ¿Qué es el renderizado de listas en React?
- ¿Cómo puedes escribir comentarios en React?
- ¿Cómo añadir un evento a un componente en React?
- ¿Cómo puedo pasar un parámetro a una función que maneja un evento en React?
- ¿Qué es el estado en React?
- ¿Qué son los hooks?
- ¿Qué hace el hook
useState? - ¿Qué hace el hook
useReducer? - ¿Qué significa la expresión “subir el estado”?
- ¿Qué hace el hook
useEffect? - Explica casos de uso del hook
useEffect - Cómo suscribirse a un evento en
useEffect - ¿Qué hace el hook
useId? - ¿Cómo podemos ejecutar código cuando el componente se monta?
- ¿Qué son los Fragments en React?
- ¿Por qué es recomendable usar Fragment en vez de un div?
- ¿Qué es el Compound Components Pattern?
- ¿Cómo puedes inicializar un proyecto de React desde cero?
- ¿Qué es React DOM?
- ¿Qué JavaScript necesito para aprender React?
- ¿Qué es el Virtual DOM?
- ¿Por qué no se debe mutar el estado directamente en React?
- ¿Qué es la composición de componentes y por qué React la prefiere a la herencia?
- Solucionario
Intermedio
- ¿Cómo crear un hook personalizado (custom hook)?
- ¿Cuántos
useEffectpuede tener un componente? - ¿Cómo podemos ejecutar código cuando el componente se desmonta del árbol?
- Cómo puedes cancelar una petición a una API en
useEffectcorrectamente - ¿Cuáles son las reglas de los hooks en React?
- ¿Qué diferencia hay entre
useEffectyuseLayoutEffect? - ¿Qué son mejores los componentes de clase o los componentes funcionales?
- ¿Cómo mantener los componentes puros y qué ventajas tiene?
- ¿Qué es la hidratación (hydration) en React?
- ¿Qué es el Server Side Rendering y qué ventajas tiene?
- ¿Cómo puedes crear un Server Side Rendering con React desde cero?
- ¿Puedes poner un ejemplo de efectos colaterales en React?
- ¿Qué diferencia hay entre componentes controlados y no controlados? ¿Qué ventajas y desventajas tienen?
- ¿Qué son los High Order Components (HOC)?
- ¿Qué son las render props?
- ¿Por qué no podemos usar un
ifen el renderizado de un componente? - ¿Por qué debemos utilizar una función para actualizar el estado de React?
- ¿Qué es el ciclo de vida de un componente en React?
- ¿Por qué puede ser mala práctica usar el
indexcomo key en un listado de React? - ¿Para qué sirve el hook
useMemo? - ¿Es buena idea usar siempre
useMemopara optimizar nuestros componentes? - ¿Para qué sirve el hook
useCallback? - ¿Es buena idea usar siempre
useCallbackpara optimizar nuestros componentes? - ¿Cuál es la diferencia entre
useCallbackyuseMemo? - ¿Qué son las refs en React?
- ¿Cómo funciona el hook
useRef? - ¿Qué hace el hook
useLayoutEffect? - ¿Qué son los componentes stateless?
- ¿Cómo puedes prevenir el comportamiento por defecto de un evento en React?
- ¿Qué es el
StrictModeen React? - ¿Por qué es recomendable exportar los componentes de React de forma nombrada?
- ¿Cómo puedes exportar múltiples componentes de un mismo archivo?
- ¿Cómo puedo importar de forma dinámica un componente en React?
- ¿Cuando y por qué es recomendable importar componentes de forma dinámica?
- ¿Sólo se pueden cargar componentes de forma dinámica si se exportan por defecto?
- ¿Qué es el contexto en React? ¿Cómo puedo crearlo y consumirlo?
- ¿Qué es el
SyntheticEventen React? - ¿Qué es
flushSyncen React? - ¿Qué son los Error Boundaries en React?
- ¿Qué son las Forward Refs?
- ¿Cómo puedo validar el tipo de mis props?
- ¿Cómo puedo validar las propiedades de un objeto con PropTypes?
- ¿Cómo puedo validar las propiedades de un array con PropTypes?
- ¿Cómo puedo inyectar HTML directamente en un componente de React?
- ¿Por qué puede ser mala idea pasar siempre todas las props de un objeto a un componente?
- ¿Cuál es el propósito del atributo “key” en React y por qué es importante usarlo correctamente al renderizar listas de elementos?
- ¿Para qué sirve el hook
useTransitiony cuándo deberías usarlo? - ¿Para qué sirve el hook
useActionState? - ¿Qué problema resuelve el hook
useOptimistic? - ¿Cómo funciona el hook
useFormStatusy qué aporta junto a las Server Actions? - ¿Qué es el hook
useFormStatey cuándo conviene usarlo? - ¿Qué son las Server Actions y cómo se usan con formularios en React?
- ¿Cuál es la diferencia entre la prop
actiony el atributoformActionen React/Next.js? - ¿Qué diferencia hay entre componentes de servidor y componentes de cliente en React/Next.js?
- ¿Para qué sirve el hook
useSyncExternalStore? - ¿Cómo funciona
React.memoy cuándo es útil? - ¿Qué diferencia hay entre
ReactDOM.render,createRootyhydrateRoot? - ¿Qué provoca un re-render en un componente de React?
- ¿Qué es el batching de actualizaciones de estado en React?
- ¿Qué es
Suspenseen React y para qué se usa? - ¿Qué es la reconciliación (reconciliation) en React?
- ¿Qué es el estado derivado y por qué conviene calcularlo en el render?
- ¿Qué es una stale closure y cómo afecta a los hooks?
- ¿Cómo puedes evitar re-renders innecesarios al usar Context?
- ¿Qué es
React.lazyy cómo se combina conSuspense? - ¿Qué es
startTransitiony en qué se diferencia de actualizar el estado de forma normal? - ¿En React 19 se necesita todavía
forwardRef? - Solucionario
Experto
- ¿Es React una biblioteca o un framework? ¿Por qué?
- ¿Para qué sirve el hook
useImperativeHandle? - ¿Para qué sirve el método
cloneElementde React? - ¿Qué son los portales en React?
- ¿Por qué
StrictModerenderiza dos veces la aplicación? - ¿Qué problemas crees que pueden aparecer en una aplicación al querer visualizar listas de miles/millones de datos?
- ¿Cómo puedes abortar una petición fetch con
useEffecten React? - ¿Qué solución/es implementarías para evitar problemas de rendimiento al trabajar con listas de miles/millones de datos?
- ¿Qué es el hook
useDebugValue? - ¿Qué es el
Profileren React? - ¿Cómo puedes acceder al evento nativo del navegador en React?
- ¿Cómo puedes registrar un evento en la fase de captura en React?
- ¿Cómo puedes mejorar el rendimiento del Server Side Rendering en React para evitar que bloquee el hilo principal?
- ¿Qué diferencia hay entre
renderToStaticNodeStream()yrenderToPipeableStream()? - ¿Para qué sirve el hook
useDeferredValue? - ¿Para qué sirve el método
renderToReadableStream()? - ¿Qué es la función
useen React y para qué se utiliza? - ¿Para qué sirve el hook
useInsertionEffect? - ¿Cómo se complementan
useMemo,useCallback,useTransitionyuseDeferredValuepara optimizar el rendimiento? - ¿Qué es Concurrent React y qué problemas resuelve?
- ¿Qué es React Fiber?
- ¿Qué es el React Compiler y qué ventajas aporta?
- ¿Cómo puedo hacer testing de un componente?
- ¿Cómo puedo hacer testing de un hook?
- ¿Qué es Flux?
- Solucionario
Errores típicos en React
- ¿Qué quiere decir: Warning: Each child in a list should have a unique key prop?
- React Hook useXXX is called conditionally. React Hooks must be called in the exact same order in every component render
- Can’t perform a React state update on an unmounted component
- Too many re-renders. React limits the number of renders to prevent an infinite loop
- ¿Qué diferencia existe entre Shadow DOM y Virtual DOM?
- ¿Qué es el Binding?
- Solucionario
Hasta aquí (por ahora)
- La web: reactjs.wiki
- Es código abierto
- Sigue por aquí si quieres
- Un último empujón