Skip to main content
Version: 2.15.0-beta

useQuery(...)

The Hook enables you to perform asynchronous data fetching operations. It automatically handles loading states, caching, and data invalidation, significantly simplifying request in React. See the TanStack useQuery(...) ๐ŸŒด documentation for more details.

const query = api.<service>.<operation>.useQuery(
parameters,
queryOptions
)

Returnsโ€‹

UseQueryResult object, see the TanStack UseQueryResult ๐ŸŒด

Argumentsโ€‹

  1. parameters: { path, query, header, body? } | QueryKey | void

    • Required only if OpenAPI specification defines required parameters
    • If the operation has no required parameters according to OpenAPI, you can omit this argument
    • parameters will be used to generate the QueryKey
    • For write operations (when using --queryable-write-operations), you can include a body parameter
    • Instead of an object with { path, query, header, body }, you can pass a QueryKey as an array which is also strictly-typed
  2. queryOptions?: UseQueryOptions

    • Optional, represents the options of the useQuery(...) ๐ŸŒด Hook
      • queryOptions.queryFn could be provided to override the default queryFn used by Qraft
tip

By default, useQuery hooks are only generated for read operations (GET method). If you want to use query hooks for write operations (POST, PUT, PATCH methods), use the --queryable-write-operations CLI option during code generation.

Exampleโ€‹

src/ApprovalPolicyName.tsx
import { createAPIClient } from './api'; // generated by OpenAPI Qraft CLI

import { requestFn } from '@openapi-qraft/react';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

const api = createAPIClient({
requestFn,
queryClient,
baseUrl: 'https://api.sandbox.monite.com/v1',
});

function ApprovalPolicyName() {
/**
* `<service>.<operation>.useQuery(...)` initiates the request to retrieve data:
* ###
* GET /approval_policies/321?items_order=asc&items_order=desc
* x-monite-version: 1.0.0
*/
const { data, error, isPending } =
api.approvalPolicies.getApprovalPoliciesId.useQuery(
{
header: {
"x-monite-version": "1.0.0",
},
path: {
approval_policy_id: "123",
},
query: {
items_order: ["asc", "desc"],
},
},
);

if (isPending) {
return <div>Loading...</div>;
}

if (error) {
return <div>Error: {error.message}</div>;
}

return <div>Approval Policy: {data?.name}</div>;
}

export default function App() {
return (
<QueryClientProvider client={queryClient}>
<ApprovalPolicyName />
</QueryClientProvider>
);
}