From 17d440408d1fd5ae79f16f27e2bf99dac22d5ce1 Mon Sep 17 00:00:00 2001 From: Jeffrey Ben <54586510+jefficy1234@users.noreply.github.com> Date: Fri, 27 Mar 2020 12:27:11 -0400 Subject: [PATCH] POKEMON API HOOKS PAIRING --- src/Pokedex.js | 32 +++++++++++++++++++++++++++----- src/hooks.js | 18 ++++++++++++++++++ 2 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 src/hooks.js diff --git a/src/Pokedex.js b/src/Pokedex.js index e278f1d..afccb67 100644 --- a/src/Pokedex.js +++ b/src/Pokedex.js @@ -1,11 +1,33 @@ -import React from 'react'; +import React, { useRef } from "react"; +import { PokemonType } from "./PokemonType"; +import { usePokemonAPI } from "./hooks"; export function Pokedex() { + const [selectedPokemon, getPokemonInfo] = usePokemonAPI(); + + const searchBox = useRef(null); + return (
-

- Edit src/Pokedex.js and save to reload. -

+ {selectedPokemon && ( +
+ {selectedPokemon.name} + + {selectedPokemon.types.length > 1 && ( + + )} + + sprite +
+ )} +

Select Pokemon:

+ + + + +
); -} \ No newline at end of file +} diff --git a/src/hooks.js b/src/hooks.js new file mode 100644 index 0000000..c2d098d --- /dev/null +++ b/src/hooks.js @@ -0,0 +1,18 @@ +import React, { useState } from "react"; + +export function usePokemonAPI() { + const [pokemon, setPokemon] = useState(null); + + async function getPokemonInfo(name) { + const url = `https://pokeapi.co/api/v2/pokemon/${name.toLowerCase()}`; + const response = await fetch(url); + if (!response.ok) { + alert("Pokemon does not exist"); + return; + } + const data = await response.json(); + setPokemon(data); + } + + return [pokemon, getPokemonInfo]; +}