Uso de PokeAPI para Obtener Imágenes de Pokémon en React
Clase 12 de 22 • Curso Profesional de React.js y Redux
Resumen
¿Cómo obtenemos las imágenes de cada Pokémon desde la API?
Iniciar con el uso de datos visuales es un gran paso para dar vida a cualquier aplicación interactiva. En este caso, personalizaremos la experiencia al asociar la imagen específica de cada Pokémon a su correspondiente entrada en la lista. Esto se logra accediendo a las imágenes mediante la API de Pokeapi.
-
Explorar la Pokeapi: Ingresamos al navegador para consultar la documentación de Pokeapi. Al realizar una primera llamada a
GetPokemons
, recibimos una lista de Pokémon con sus nombres y URLs, a través de las cuales obtendremos más información. -
Identificar los sprites: Dentro de la información detallada de cada Pokémon, encontramos una sección denominada "sprites". Este es el lugar donde están alojadas las imágenes de cada uno de ellos.
-
Preparativos del entorno:
- Restauramos el
offset
a su valor inicial para centrarnos en la primera generación de Pokémon. - Deshabilitamos cualquier middleware innecesario, dejando solo el
logger
.
- Restauramos el
¿Cómo recuperamos los detalles de cada Pokémon?
Para asociar las imágenes a los Pokémon, primero necesitamos extraer los detalles individuales utilizando un método de obtención asíncrona.
-
Uso de
Promise.all
: Implementamospromise.all()
para enviar múltiples solicitudes simultáneas y recibir las respuestas de cada una de manera eficiente. Esta técnica optimiza el tiempo de obtención al resolver todas las peticiones en paralelo. -
Creación de
GetPokémonDetails
: Se escribe una funciónGetPokémonDetails
, que recibe un objeto Pokémon y devuelve una llamada medianteAxios.get
a la URL específica de ese Pokémon. Este método nos ayuda a manejar la respuesta de manera eficiente para obtener únicamente los datos relevantes.const GetPokémonDetails = (pokemon) => { return Axios.get(pokemon.url) .then(response => response.data) .catch(error => console.error('Error fetching Pokémon details:', error)); };
-
Integración de los detalles: Importamos la función previamente creada en nuestro
app.js
y la usamos para despachar una acción en nuestra aplicación que actualiza el estado de los Pokémon con los detalles obtenidos.
¿Cómo finalizamos la visualización con la imagen propia de cada Pokémon?
Ya con las funciones en marcha para obtener y almacenar los detalles de los Pokémon, llega el momento de integrar estas imágenes al componente adecuado.
-
Modificar
PokémonCard
: Ajustamos el componentePokémonCard
para que reciba no solo el nombre del Pokémon, sino también su imagen. Esto implica reemplazar cualquier imagen temporal con la que proporcionamos a través de los detalles.const PokémonCard = ({ name, image }) => ( <div> <img src={image} alt={name} /> <h3>{name}</h3> </div> );
-
Actualizar
PokémonList
: Nos dirigimos aPokémonList
para asegurarnos de que el componentePokémonCard
reciba ahora la imagen correcta, utilizando el pathPokémon.sprites.frontDefault
. -
Visualización del resultado: Tras guardar los cambios, al recargar el navegador, corroboramos que cada Pokémon ahora tiene su propia imagen, haciéndolos así únicos y reconocibles.
Este proceso no solo torna la aplicación más atractiva visualmente, sino que también brinda a los desarrolladores una experiencia enriquecedora al trabajar con APIs y gestionar el manejo asíncrono de datos. Ahora, como reto adicional, se invita a implementar lo mismo con las habilidades de los Pokémon y compartir la solución para fomentar el aprendizaje colaborativo.