@aspida/swr
Getting Started
Installation
Make HTTP request from application
src/index.ts
import useAspidaSWR from "@aspida/swr"
import aspida from "@aspida/axios"
import api from "../api/$api"
const client = api(aspida())
function Profile() {
const { data, error } = useAspidaSWR(
client.user._userId(123),
{ query: { name: 'mario' } }
)
if (error) return <div>failed to load</div>
if (!data) return <div>loading...</div>
return <div>hello {data.name}!</div>
}
Get response body/status/headers
src/index.ts
import useAspidaSWR from "@aspida/swr"
import aspida from "@aspida/axios"
import api from "../api/$api"
const client = api(aspida())
function Profile() {
const { data, error } = useAspidaSWR(
client.user._userId(123),
'get',
{ query: { name: 'mario' } }
)
if (error) return <div>failed to load</div>
if (!data) return <div>loading...</div>
return (
<>
<div>Status: {data.status}</div>
<div>Headers: {JSON.stringify(data.headers)}</div>
<div>Name: {data.body.name}</div>
</>
)
}
useAspidaSWR(client.user._userId(123), { query })
is an alias of useAspidaSWR(client.user._userId(123), "$get", { query })
Use with SWR options
src/index.ts
import useAspidaSWR from "@aspida/swr"
import aspida from "@aspida/axios"
import api from "../api/$api"
const client = api(aspida())
function Profile() {
const { data, error } = useAspidaSWR(
client.user._userId(123),
{
query: { name: 'mario' },
revalidateOnMount: true,
initialData: { name: 'anonymous' }
}
)
if (error) return <div>failed to load</div>
return <div>hello {data.name}!</div>
}
Conditional Fetching
If you use the enabled = false
option, AspidaSWR will not start the request.
const { data: user } = useAspidaSWR(client.user)
const { data } = useAspidaSWR(client.articles, { query: { userId: user?.id ?? 0 }, enabled: !!user })
const { data } = useSWR(
user ? [client.articles.$path({ query: { userId: user.id }}), '$get'] : null,
() => client.articles.$get({ query: { userId: user.id }})
)
License
@aspida/swr is licensed under a MIT License.