# SuspenseQueryResult

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

Result from createSuspenseQuery

Includes useSuspenseQuery hook that:
- Requires wrapping in <Suspense> boundary
- Data is always defined (no undefined checks)
- Does NOT support `enabled` option

## Extends

- [`BaseQueryResult`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/)\<`TQueryFnData`, `TSelected`, `TError`\>

## Type Parameters

### TQueryFnData

`TQueryFnData`

The raw data type

### TSelected

`TSelected` = `TQueryFnData`

The type after select transformation

### TError

`TError` = `Error`

The error type

## Properties

### fetch

> **fetch**: () => `Promise`\<`TSelected`\>

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

Fetch data in loader (uses ensureQueryData for cache-first)

#### Returns

`Promise`\<`TSelected`\>

#### Inherited from

[`BaseQueryResult`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/).[`fetch`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/#fetch)

***

### prefetch

> **prefetch**: () => `Promise`\<`void`\>

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

Eagerly prefetch data into the cache without blocking.
Useful for preloading data before navigating to a route.

Unlike `fetch()`, this returns a void promise so it can be fire-and-forget.

#### Returns

`Promise`\<`void`\>

#### Example

```ts
// In a route hover handler
button.addEventListener("mouseenter", () => userQuery.prefetch())
```

#### Inherited from

[`BaseQueryResult`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/).[`prefetch`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/#prefetch)

***

### invalidate

> **invalidate**: () => `Promise`\<`void`\>

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

Invalidate the cache (refetches if query is active)

#### Returns

`Promise`\<`void`\>

#### Inherited from

[`BaseQueryResult`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/).[`invalidate`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/#invalidate)

***

### getQueryKey

> **getQueryKey**: () => readonly `unknown`[]

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

Get query key (for advanced React Query usage)

#### Returns

readonly `unknown`[]

#### Inherited from

[`BaseQueryResult`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/).[`getQueryKey`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/#getquerykey)

***

### getCacheData

> **getCacheData**: \{(): `TSelected` \| `undefined`; \<`TFinal`\>(`select`): `TFinal` \| `undefined`; \}

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

Read data directly from cache without fetching.
Returns undefined if data is not in cache.

#### Call Signature

> (): `TSelected` \| `undefined`

##### Returns

`TSelected` \| `undefined`

#### Call Signature

> \<`TFinal`\>(`select`): `TFinal` \| `undefined`

##### Type Parameters

###### TFinal

`TFinal`

##### Parameters

###### select

(`data`) => `TFinal`

##### Returns

`TFinal` \| `undefined`

#### Template

**TFinal**

Type returned after optional select transformation

#### Param

**select**

Optional select function to transform cached data further

#### Returns

Cached data with select applied, or undefined if not in cache

#### Example

```ts
// Just get the cached data
const user = userQuery.getCacheData()

// With additional select transformation
const name = userQuery.getCacheData((user) => user.name)
```

#### Inherited from

[`BaseQueryResult`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/).[`getCacheData`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/#getcachedata)

***

### setData

> **setData**: (`updater`) => `TQueryFnData` \| `undefined`

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

Write raw data directly into the cache (useful for optimistic updates).
Accepts a new value or an updater function that receives the current cached raw data.

Note: The value is stored as raw (pre-select) data.  Any active `select`
transformations are automatically re-applied by React Query on the next render.

#### Parameters

##### updater

`TQueryFnData` \| ((`old`) => `TQueryFnData` \| `undefined`)

#### Returns

`TQueryFnData` \| `undefined`

#### Example

```ts
// Optimistic update before a mutation
userQuery.setData({ id: "1", name: "Alice" })

// Functional update
counterQuery.setData((prev) => (prev ?? 0) + 1)
```

#### Inherited from

[`BaseQueryResult`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/).[`setData`](https://ic-reactor.b3pay.net/v3/libs/interfaces/basequeryresult/#setdata)

***

### useSuspenseQuery

> **useSuspenseQuery**: [`UseSuspenseQueryWithSelect`](https://ic-reactor.b3pay.net/v3/libs/interfaces/usesuspensequerywithselect/)\<`TQueryFnData`, `TSelected`, `TError`\>

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

React hook for components - data is always defined (wrap in Suspense)