2020-04-07 15:48:13 +02:00
|
|
|
import { useState, useEffect } from 'react'
|
|
|
|
import { useRouter } from 'next/router'
|
|
|
|
import useSWR from 'swr'
|
2017-07-29 14:45:12 +02:00
|
|
|
|
2020-05-18 21:24:37 +02:00
|
|
|
const fetcher = (url) => fetch(url).then((res) => res.json())
|
2017-07-29 14:45:12 +02:00
|
|
|
|
2020-04-07 15:48:13 +02:00
|
|
|
const useMounted = () => {
|
|
|
|
const [mounted, setMounted] = useState(false)
|
|
|
|
useEffect(() => setMounted(true), [])
|
|
|
|
return mounted
|
|
|
|
}
|
|
|
|
|
|
|
|
export default function Index() {
|
|
|
|
const mounted = useMounted()
|
|
|
|
const router = useRouter()
|
|
|
|
const queryString = `/api/${Object.keys(router.query).join('')}`
|
|
|
|
const { data, error } = useSWR(() => (mounted ? queryString : null), fetcher)
|
2017-07-29 14:45:12 +02:00
|
|
|
|
2020-04-07 15:48:13 +02:00
|
|
|
if (error) return <div>Failed to load</div>
|
|
|
|
if (!data) return <div>Loading...</div>
|
2017-07-29 14:45:12 +02:00
|
|
|
|
2020-04-07 15:48:13 +02:00
|
|
|
return (
|
|
|
|
<content>
|
|
|
|
<p>
|
|
|
|
{queryString} routed to https://swapi.co{queryString}
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
<a href="?people/2">Try</a>
|
|
|
|
|
|
|
|
<a href="/">Reset</a>
|
|
|
|
</p>
|
|
|
|
<pre>{data ? JSON.stringify(data, null, 2) : 'Loading...'}</pre>
|
|
|
|
</content>
|
|
|
|
)
|
2017-07-29 14:45:12 +02:00
|
|
|
}
|