diff --git a/src/main.tsx b/src/main.tsx
index 31358ab..b273eb5 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -1,12 +1,15 @@
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import "./index.css";
import App from "./App.tsx";
-import CharactersPage from "./pages/CharactersPage.tsx";
+
+const queryClient = new QueryClient()
createRoot(document.getElementById("root")!).render(
-
-
+
+
+
,
);
diff --git a/src/pages/CharactersPage.tsx b/src/pages/CharactersPage.tsx
index ac82c9e..fc16ddd 100644
--- a/src/pages/CharactersPage.tsx
+++ b/src/pages/CharactersPage.tsx
@@ -4,6 +4,7 @@ import { useEffect, useState } from "react";
import CharacterCardSmall from "../components/CharacterCardSmall";
import CharacterDetailCard from "../components/CharacterDetailCard";
import SearchIcon from "../assets/search.svg";
+import { useQuery } from '@tanstack/react-query';
import type { Character } from "../types/Character";
@@ -15,8 +16,20 @@ const filters: { title: string; key: FilterCategory; options: string[] }[] = [
{ title: "Status", key: "status", options: ["Alive", "Dead", "Unknown"] },
];
+// AI was used to create the fetchCharacters function
+async function fetchCharacters(): Promise
{
+ const response = await fetch("https://rickandmortyapi.com/api/character");
+
+ if (!response.ok) {
+ throw new Error(`Could not fetch characters: ${response.status}`);
+ }
+
+ const data = await response.json();
+ return data.results;
+}
+
export default function CharactersPage() {
- const [characters, setCharacters] = useState([]);
+ const {data: characters = []} = useQuery({queryKey: ['characters'], queryFn: fetchCharacters});
const [selectedCharacter, setSelectedCharacter] = useState(
null,
);
@@ -59,26 +72,6 @@ export default function CharactersPage() {
);
}, [favoriteCharacterIds]);
- useEffect(() => {
- async function fetchCharacters() {
- try {
- const response = await fetch(
- "https://rickandmortyapi.com/api/character",
- );
-
- if (!response.ok) {
- throw new Error(`Could not fetch characters: ${response.status}`);
- }
-
- const data = await response.json();
- setCharacters(data.results);
- } catch (error) {
- console.error(error);
- }
- }
- fetchCharacters();
- }, []);
-
const filteredCharacters = characters.filter((character) => {
const matchesSearch = character.name
.toLowerCase()
@@ -150,7 +143,7 @@ export default function CharactersPage() {
}
return (
-
+
+
);
}
diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx
index aafc02e..a51e7d2 100644
--- a/src/pages/HomePage.tsx
+++ b/src/pages/HomePage.tsx
@@ -1,11 +1,7 @@
import Hero from "../components/Hero";
function HomePage() {
- return (
-
-
-
- );
+ return ;
}
export default HomePage;