React Query wrapper for aspida
npm install @aspida/react-query
- Using npm:
``sh`
$ npm install aspida @aspida/react-query @aspida/axios react-query axios
# $ npm install aspida @aspida/react-query @aspida/fetch react-query
# $ npm install aspida @aspida/react-query @aspida/node-fetch react-query node-fetch
- Using Yarn:
`sh`
$ yarn add aspida @aspida/react-query @aspida/axios react-query axios
# $ yarn add aspida @aspida/react-query @aspida/fetch react-query
# $ yarn add aspida @aspida/react-query @aspida/node-fetch react-query node-fetch
src/index.ts
`tsx
import aspida from "@aspida/axios"; // "@aspida/fetch", "@aspida/node-fetch"
import { useAspidaQuery } from "@aspida/react-query";
import { QueryClient, QueryClientProvider, useMutation, useQueryClient } from "react-query";
import api from "../api/$api";
const client = api(aspida());
const queryClient = new QueryClient();
function App() {
return (
// Provide the client to your App
);
}
function postTodo(body: { id: number; title: string }) {
return client.todos.$post({ body });
}
function Todos() {
// Access the client
const queryClient = useQueryClient();
// Queries
const query = useAspidaQuery(client.todos, { query: { limit: 10 } });
// Mutations
const mutation = useMutation(postTodo, {
onSuccess: () => {
// Invalidate and refetch
queryClient.invalidateQueries(client.todos.$path({ query: { limit: 10 } }));
},
});
return (
onClick={() => {
mutation.mutate({
id: Date.now(),
title: "Do Laundry",
});
}}
>
Add Todo
render(
`
src/index.ts
`tsx
import aspida from "@aspida/axios"; // "@aspida/fetch", "@aspida/node-fetch"
import { useAspidaQuery } from "@aspida/react-query";
import { QueryClient, QueryClientProvider } from "react-query";
import api from "../api/$api";
const client = api(aspida());
const queryClient = new QueryClient();
function App() {
return (
);
}
function Profile() {
const { data, error } = useAspidaQuery(client.user._userId(123), "get", {
query: { name: "mario" },
});
if (error) return
render(
`
useAspidaQuery(client.user._userId(123), { query }) is an alias of useAspidaQuery(client.user._userId(123), "$get", { query })
src/index.ts
`tsx
import aspida from "@aspida/axios"; // "@aspida/fetch", "@aspida/node-fetch"
import { useAspidaQuery } from "@aspida/react-query";
import { QueryClient, QueryClientProvider } from "react-query";
import api from "../api/$api";
const client = api(aspida());
const queryClient = new QueryClient();
function App() {
return (
);
}
function Profile() {
const { data, error } = useAspidaQuery(client.user._userId(123), {
query: { name: "mario" },
refetchOnMount: true,
initialData: { name: "anonymous" },
});
if (error) return
render(
``
@aspida/react-query is licensed under a MIT License.