# createInfiniteQueryFactory

> **createInfiniteQueryFactory**\<`Service`, `Transform`, `Method`, `TPageParam`, `Selected`\>(`reactor`, `config`): `InfiniteQueryFactoryFn`\<`Service`, `Method`, `Transform`, `TPageParam`, `Selected`\>

Defined in: [react/src/createInfiniteQuery.ts:529](https://github.com/B3Pay/ic-reactor/blob/70bedf3c8779611a3b35710510442dee7f630b87/packages/react/src/createInfiniteQuery.ts#L529)

Create an infinite query factory that accepts getArgs at call time.
Useful when pagination logic varies by context.

## Type Parameters

### Service

`Service`

The actor interface type

### Transform

`Transform` *extends* keyof [`TransformArgsRegistry`](https://ic-reactor.b3pay.net/v3/libs/interfaces/transformargsregistry/)\<`unknown`\>

The transformation key (identity, display, etc.)

### Method

`Method` *extends* `string` = [`FunctionName`](https://ic-reactor.b3pay.net/v3/libs/type-aliases/functionname/)\<`Service`\>

The method name on the actor

### TPageParam

`TPageParam` = `unknown`

The page parameter type

### Selected

`Selected` = `InfiniteData`\<[`ReactorQueryData`](https://ic-reactor.b3pay.net/v3/libs/type-aliases/reactorquerydata/)\<[`ReactorReturnOk`](https://ic-reactor.b3pay.net/v3/libs/type-aliases/reactorreturnok/)\<`Service`, `Method`, `Transform`\>\>, `TPageParam`\>

The type returned after select transformation

## Parameters

### reactor

[`Reactor`](https://ic-reactor.b3pay.net/v3/libs/classes/reactor/)\<`Service`, `Transform`\>

The Reactor instance

### config

[`InfiniteQueryFactoryConfig`](https://ic-reactor.b3pay.net/v3/libs/type-aliases/infinitequeryfactoryconfig/)\<[`NoInfer`](https://ic-reactor.b3pay.net/v3/libs/type-aliases/noinfer/)\<`Service`\>, `Method`, `Transform`, `TPageParam`, `Selected`\>

Infinite query configuration (without getArgs)

## Returns

`InfiniteQueryFactoryFn`\<`Service`, `Method`, `Transform`, `TPageParam`, `Selected`\>

A function that accepts getArgs and returns an ActorInfiniteQueryResult

## Example

```ts
const getPostsQuery = createActorInfiniteQueryFactory(reactor, {
  functionName: "get_posts",
  initialPageParam: 0,
  getKeyArgs: (args) => {
    const [{ userId }] = args
    return [{ userId }]
  },
  getNextPageParam: (lastPage) => lastPage.nextCursor,
})

// Create query with specific args builder
const userPostsQuery = getPostsQuery((cursor) => [{ userId, cursor, limit: 10 }])
const { data, fetchNextPage } = userPostsQuery.useInfiniteQuery()
```