ActionResult
Reactive state and controls for an async action managed by useAction (and plugin-specific hooks built on top of it).
Lifecycle: starts at idle. Each send(...) flips to running, then to success or error
depending on the outcome. data from a prior success persists through subsequent running
states for stale-while-revalidate UX; only reset() clears it.
Calling send(...) while a previous call is in flight aborts the first via its AbortSignal
and replaces it. Awaiters of the superseded call see a rejection with an AbortError,
filterable via isAbortError from @solana/promises.
Type Parameters
| Type Parameter | Description |
|---|---|
TArgs extends readonly unknown[] | The argument tuple send accepts; forwarded to the wrapped function after the abort signal. |
TResult | The value the wrapped function resolves to on success. |
Properties
data
The result on success, or undefined if no successful call has happened yet.
error
The error on failure, or undefined.
isError
true when status === 'error'.
isIdle
true when status === 'idle'.
isRunning
true when status === 'running' — a send is in flight.
isSuccess
true when status === 'success'.
reset()
Reset state back to idle, aborting any in-flight call. Stable reference.
Returns
void
send()
Trigger the action. Resolves with the wrapped function's result, or rejects with the thrown
error. Calling send again while a prior call is in flight aborts the first and rejects its
promise with an AbortError. Stable reference.
Fire-and-forget callers can ignore the returned promise and render from status / data /
error. Awaiters that read the resolved value (e.g. to navigate on success) should filter
supersede rejections with isAbortError from @solana/promises.
Parameters
| Parameter | Type |
|---|---|
...args | TArgs |
Returns
Promise<TResult>
status
The current lifecycle status as a discriminated string. The isIdle / isRunning /
isSuccess / isError booleans below are derived from this — pick whichever reads better
at the call site.