SWR wrapper for aspida
npm install @aspida/swr
- Using npm:
``sh`
$ npm install aspida @aspida/swr @aspida/axios swr axios
# $ npm install aspida @aspida/swr @aspida/fetch swr
# $ npm install aspida @aspida/swr @aspida/node-fetch swr node-fetch
- Using Yarn:
`sh`
$ yarn add aspida @aspida/swr @aspida/axios swr axios
# $ yarn add aspida @aspida/swr @aspida/fetch swr
# $ yarn add aspida @aspida/swr @aspida/node-fetch swr node-fetch
src/index.ts
`tsx
import aspida from "@aspida/axios"; // "@aspida/fetch", "@aspida/node-fetch"
import useAspidaSWR from "@aspida/swr";
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
$3
src/index.ts`tsx
import aspida from "@aspida/axios"; // "@aspida/fetch", "@aspida/node-fetch"
import useAspidaSWR from "@aspida/swr";
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
failed to load;
if (!data) return loading...;
return (
<>
Status: {data.status}
Headers: {JSON.stringify(data.headers)}
Name: {data.body.name}
>
);
}
`useAspidaSWR(client.user._userId(123), { query }) is an alias of useAspidaSWR(client.user._userId(123), "$get", { query })$3
src/index.ts`tsx
import aspida from "@aspida/axios"; // "@aspida/fetch", "@aspida/node-fetch"
import useAspidaSWR from "@aspida/swr";
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
failed to load;
return hello {data.name}!;
}
`$3
If you use the
enabled = false option, AspidaSWR will not start the request.`ts
const { data: user } = useAspidaSWR(client.user);
const { data } = useAspidaSWR(client.articles, {
query: { userId: user?.id ?? 0 },
enabled: !!user,
});
// is an alias of
const { data } = useSWR(
user ? [client.articles.$path({ query: { userId: user.id } }), "$get"] : null,
() => client.articles.$get({ query: { userId: user.id } })
);
``@aspida/swr is licensed under a MIT License.