import { useParams, Link as RouterLink } from 'react-router-dom' import { useQuery } from '@tanstack/react-query' import { getCharacter, getFilm, getPlanet } from './api' export default function Character() { let params = useParams() const characterId = params.characterId! const { status, data } = useQuery({ queryKey: ['character', characterId], queryFn: () => getCharacter(characterId), }) if (status === 'pending') return

Loading...

if (status === 'error') return

Error :(

const homeworldUrlParts = data.homeworld.split('/').filter(Boolean) const homeworldId = homeworldUrlParts[homeworldUrlParts.length - 1] return (

{data.name}

Born: {data.birth_year}

Eyes: {data.eye_color}

Hair: {data.hair_color}

Height: {data.height}

Mass: {data.mass}

Homeworld:

Films

{data.films.map((film: any) => { const filmUrlParts = film.split('/').filter(Boolean) const filmId = filmUrlParts[filmUrlParts.length - 1] return })}
) } function Film({ filmId }: { filmId: string }) { const { data, status } = useQuery({ queryKey: ['film', filmId], queryFn: () => getFilm(filmId), }) if (status === 'success') { return (
{data.episode_id}. {data.title}
) } } function Homeworld({ homeworldId }: { homeworldId: string }) { const { data, status } = useQuery({ queryKey: ['homeworld', homeworldId], queryFn: () => getPlanet(homeworldId), }) if (status === 'pending') return Loading... if (status === 'error') return Error :( return {data.name} }