()
| 14 | } |
| 15 | |
| 16 | export const App = () => { |
| 17 | // const [likedAnime, setLikedAnime] = useState<Array<IAnime>>([]); |
| 18 | // const [dislikedAnime, setDislikedAnime] = useState<Array<IAnime>>([]); |
| 19 | const [query, setQuery] = useState<string>('naruto'); |
| 20 | const [results, setResults] = useState<Array<IAnime>>([]); |
| 21 | const [showFavorites, setShowFavorites] = useState<boolean>(false); |
| 22 | const [favorites, setFavorites] = useState<Array<IAnime>>([]); |
| 23 | |
| 24 | // Fetch anime data on page load. |
| 25 | useEffect(() => { |
| 26 | fetchAnimeData(); |
| 27 | }, []); // eslint-disable-line react-hooks/exhaustive-deps |
| 28 | |
| 29 | useEffect(() => { |
| 30 | console.log(favorites); |
| 31 | }, [favorites]); |
| 32 | |
| 33 | useEffect(() => { |
| 34 | console.log(showFavorites); |
| 35 | }, [showFavorites]); |
| 36 | |
| 37 | // Testing useEffect. |
| 38 | // useEffect(() => { |
| 39 | // console.log(query); |
| 40 | // }, [query]); |
| 41 | |
| 42 | const fetchAnimeData = (): void => { |
| 43 | setShowFavorites(false); |
| 44 | |
| 45 | // Define the config we'll need for our Api request |
| 46 | const url = `https://api.jikan.moe/v3/search/anime?q=${query}`; |
| 47 | |
| 48 | // Make the HTTP Api request |
| 49 | fetch(url) |
| 50 | .then((response: Response) => response.json()) |
| 51 | .then((data) => { |
| 52 | setResults([...data.results]); |
| 53 | }) |
| 54 | .catch((error) => { |
| 55 | alert('Error, check console'); |
| 56 | console.error(error); |
| 57 | }); |
| 58 | }; |
| 59 | |
| 60 | const toggleFavoritesSection = () => { |
| 61 | setShowFavorites(!showFavorites); |
| 62 | }; |
| 63 | |
| 64 | return ( |
| 65 | <div className="font-sans antialiased min-h-screen bg-gray-100 text-gray-900 py-8 flex flex-col place-items-center"> |
| 66 | <div className="text-center flex flex-col space-y-8 w-7/12 lg:w-5/12 h-full"> |
| 67 | {/* Search */} |
| 68 | <div className="flex space-x-4 justify-center"> |
| 69 | <div> |
| 70 | <input |
| 71 | type="text" |
| 72 | value={query} |
| 73 | onChange={(e) => setQuery(e.target.value)} |
nothing calls this directly
no test coverage detected