Hasta ahora hemos trabajado con datos definidos directamente en el código. Pero las aplicaciones reales traen datos de un servidor: usuarios de una base de datos, productos de un catálogo, posts de un blog...
En React, el patrón para traer datos combina todo lo que has aprendido: useState + useEffect + fetch.
Toda petición a una API pasa por tres fases, y necesitas un estado para cada una:
La versión con async/await es más legible, pero hay un detalle: el callback de useEffect no puede ser async directamente. Creas una función async dentro:
¿Por qué no useEffect(async () => ...)? Porque useEffect espera que la función devuelva una función de limpieza o nada. Una función async devuelve una Promise, lo cual confundiría a React.
La parte del JSX usa lo que aprendiste en renderizado condicional:
Cada caso tiene su propia UI: loading muestra indicador, error muestra mensaje, éxito muestra datos.
Para este desafío usaremos JSONPlaceholder, una API pública y gratuita con datos falsos:
https://jsonplaceholder.typicode.com/users — 10 usuarioshttps://jsonplaceholder.typicode.com/posts — 100 postshttps://jsonplaceholder.typicode.com/todos — 200 tareasNo necesitas autenticación ni configuración. Solo un fetch y listo.
Trae la lista de usuarios de JSONPlaceholder y muéstralos:
useEffect con [] para hacer el fetch al montarfetch('https://jsonplaceholder.typicode.com/users').map() cuando los datos lleguenTraer datos de una API es quizá la operación más común en aplicaciones React del mundo real. Acabas de aprender el patrón que usarás cientos de veces en tu carrera.