[API reference](https://evolu.dev/docs/api-reference) › [@evolu/vue](https://evolu.dev/docs/api-reference/vue) › useQuery

```ts
function useQuery<S, R>(
  query: Query<S, R>,
  options?: Partial<{
    once: boolean;
    promise: Promise<QueryRows<R>>;
  }>,
): Readonly<Ref<QueryRows<R>>>;
```

Defined in: [useQuery.ts:37](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/vue/src/useQuery.ts#L37)

Load and subscribe to the query, returning a ref that stays in sync with
Evolu changes.

### Example

```ts
// Get all rows.
const rows = useQuery(allTodos);

// Get rows for a specific todo (the first row can be null).
const rows = useQuery(todoById(1));

// Get all rows, but without subscribing to changes.
const rows = useQuery(allTodos, { once: true });

// Prefetch rows.
const allTodos = evolu.createQuery((db) => db.selectFrom("todo").selectAll());
const allTodosPromise = evolu.loadQuery(allTodos);

// Use prefetched rows.
const rows = useQuery(allTodos, { promise: allTodosPromise });
```