Documentation Index
Fetch the complete documentation index at: https://docs.attio.com/llms.txt
Use this file to discover all available pages before exploring further.
import {QueryClient, QueryClientProvider, useSuspenseQuery} from "@tanstack/react-query"
For advanced data fetching needs, you can use the popular React Query library.
It provides a powerful and flexible way to manage data fetching and caching for your application.
Example: Fetching stoic quotes with React Query
First, you create a server function to fetch a random stoic quote.
get-stoic-quote.server.ts
export default async function getStoicQuote(): Promise<StoicQuote> {
// fetch a stoic quote from somewhere
}
Then, you create an record action that will show a dialog.
To use React Query, you wrap the dialog component in a QueryClientProvider and pass the queryClient to it.
import type {RecordAction} from "attio/client"
import {showDialog} from "attio/client"
import {QueryClient, QueryClientProvider} from "@tanstack/react-query"
import {StoicQuote} from "./stoic-quote"
const queryClient = new QueryClient()
export const recordAction: RecordAction = {
id: "stoic-quote",
label: "Get a stoic quote",
onTrigger: async ({recordId}) => {
showDialog({
title: "Stoic quote",
Dialog: () => {
return (
<QueryClientProvider client={queryClient}>
<StoicQuote recordId={recordId} />
</QueryClientProvider>
)
},
})
},
}
Finally, you create a quote component that will use the useSuspenseQuery hook to fetch the quote.
import {TextBlock} from "attio/client"
import {useSuspenseQuery} from "@tanstack/react-query"
import getStoicQuote from "./get-stoic-quote.server"
export function StoicQuote({recordId}: {recordId: string}) {
const {data: quote} = useSuspenseQuery({
queryKey: ["quote", recordId],
queryFn: () => getStoicQuote(recordId),
})
return (
<>
<TextBlock align="center">{quote.text}</TextBlock>
<TextBlock align="right">– {quote.author}</TextBlock>
</>
)
}