Skip to content
IC Reactor

createSuspenseQueryFactory

createSuspenseQueryFactory<Service, Transform, Method, Selected>(reactor, config): QueryFactoryFn<ReactorArgs<Service, Method, Transform>, SuspenseQueryResult<QueryFnData<Service, Method, Transform>, Selected, QueryError<Service, Method, Transform>>>

Defined in: react/src/createSuspenseQuery.ts:237

Create a suspense query factory: a function that takes the method’s args and returns the suspense query object for them, the same object for the same args.

The function also has getQueryKey(), the key prefix every query it returns shares, and invalidate(), which invalidates all of them whatever their args. Pass the function itself to a mutation’s invalidateQueries to refresh every instance after the mutation.

Service

Transform extends keyof TransformArgsRegistry<unknown>

Method extends string = FunctionName<Service>

Selected = QueryFnData<Service, Method, Transform>

Reactor<Service, Transform>

SuspenseQueryFactoryConfig<NoInfer<Service>, Method, Transform, Selected>

QueryFactoryFn<ReactorArgs<Service, Method, Transform>, SuspenseQueryResult<QueryFnData<Service, Method, Transform>, Selected, QueryError<Service, Method, Transform>>>

const getBalance = createSuspenseQueryFactory(ledger, {
functionName: "icrc1_balance_of",
})
// In a component under <Suspense>
const { data } = getBalance([{ owner, subaccount: [] }]).useSuspenseQuery()
// Refetch every account's balance
await getBalance.invalidate()