Skip to content
IC Reactor

SkippableQueryFactoryFn

Defined in: react/src/types.ts:651

The function createQueryFactory returns: a QueryFactoryFn that also takes TanStack Query’s skipToken in place of args, for a component whose args are not known yet. For skipToken it returns a SkippedQuery, whose useQuery() waits without fetching, in an entry of its own under the factory’s getQueryKey() prefix. Given args ? [args] : skipToken, it returns either, and useQuery() can be called on the result directly.

createSuspenseQueryFactory returns a plain QueryFactoryFn: a suspense query cannot wait on skipToken.

const getBalance = createQueryFactory(ledger, {
functionName: "icrc1_balance_of",
})
function Balance({ owner }: { owner?: string }) {
const { data } = getBalance(owner ? [{ owner }] : skipToken).useQuery()
}

TArgs

The method’s arguments

TQuery extends object

The query object it returns for args

SkippableQueryFactoryFn(args): TQuery

Defined in: react/src/types.ts:657

The function createQueryFactory returns: a QueryFactoryFn that also takes TanStack Query’s skipToken in place of args, for a component whose args are not known yet. For skipToken it returns a SkippedQuery, whose useQuery() waits without fetching, in an entry of its own under the factory’s getQueryKey() prefix. Given args ? [args] : skipToken, it returns either, and useQuery() can be called on the result directly.

createSuspenseQueryFactory returns a plain QueryFactoryFn: a suspense query cannot wait on skipToken.

TArgs

TQuery

const getBalance = createQueryFactory(ledger, {
functionName: "icrc1_balance_of",
})
function Balance({ owner }: { owner?: string }) {
const { data } = getBalance(owner ? [{ owner }] : skipToken).useQuery()
}

SkippableQueryFactoryFn(args): SkippedQuery<TQuery>

Defined in: react/src/types.ts:658

The function createQueryFactory returns: a QueryFactoryFn that also takes TanStack Query’s skipToken in place of args, for a component whose args are not known yet. For skipToken it returns a SkippedQuery, whose useQuery() waits without fetching, in an entry of its own under the factory’s getQueryKey() prefix. Given args ? [args] : skipToken, it returns either, and useQuery() can be called on the result directly.

createSuspenseQueryFactory returns a plain QueryFactoryFn: a suspense query cannot wait on skipToken.

typeof skipToken

SkippedQuery<TQuery>

const getBalance = createQueryFactory(ledger, {
functionName: "icrc1_balance_of",
})
function Balance({ owner }: { owner?: string }) {
const { data } = getBalance(owner ? [{ owner }] : skipToken).useQuery()
}

SkippableQueryFactoryFn(args): TQuery | SkippedQuery<TQuery>

Defined in: react/src/types.ts:659

The function createQueryFactory returns: a QueryFactoryFn that also takes TanStack Query’s skipToken in place of args, for a component whose args are not known yet. For skipToken it returns a SkippedQuery, whose useQuery() waits without fetching, in an entry of its own under the factory’s getQueryKey() prefix. Given args ? [args] : skipToken, it returns either, and useQuery() can be called on the result directly.

createSuspenseQueryFactory returns a plain QueryFactoryFn: a suspense query cannot wait on skipToken.

typeof skipToken | TArgs

TQuery | SkippedQuery<TQuery>

const getBalance = createQueryFactory(ledger, {
functionName: "icrc1_balance_of",
})
function Balance({ owner }: { owner?: string }) {
const { data } = getBalance(owner ? [{ owner }] : skipToken).useQuery()
}

SkippableQueryFactoryFn(args): TQuery

Defined in: react/src/types.ts:666

The function createQueryFactory returns: a QueryFactoryFn that also takes TanStack Query’s skipToken in place of args, for a component whose args are not known yet. For skipToken it returns a SkippedQuery, whose useQuery() waits without fetching, in an entry of its own under the factory’s getQueryKey() prefix. Given args ? [args] : skipToken, it returns either, and useQuery() can be called on the result directly.

createSuspenseQueryFactory returns a plain QueryFactoryFn: a suspense query cannot wait on skipToken.

TArgs

TQuery

const getBalance = createQueryFactory(ledger, {
functionName: "icrc1_balance_of",
})
function Balance({ owner }: { owner?: string }) {
const { data } = getBalance(owner ? [{ owner }] : skipToken).useQuery()
}

getQueryKey: () => readonly unknown[]

Defined in: react/src/types.ts:562

The key prefix every query of this factory shares, whatever its args: the canister (the config’s callConfig.canisterId, else the reactor’s) and the method, plus the reactor’s transform segment and any agent or effective-target segment the config’s callConfig adds, and for an infinite factory its config queryKey. TanStack Query matches keys by prefix, so the prefix covers every args instance and every infinite page set. Queries of the same method made elsewhere share it too.

readonly unknown[]

const getBalance = createQueryFactory(ledger, {
functionName: "icrc1_balance_of",
})
// Every cached balance, whatever the account
ledger.queryClient.getQueriesData({ queryKey: getBalance.getQueryKey() })

QueryFactoryMethods.getQueryKey


invalidate: () => Promise<void>

Defined in: react/src/types.ts:574

Invalidate every query of this factory, whatever its args, on the reactor’s QueryClient. It resolves once the active ones have refetched; a refetch that fails does not reject it.

Promise<void>

// After a transfer, refresh every balance on screen
await getBalance.invalidate()

QueryFactoryMethods.invalidate