abon
Version:
Flexible state management for React 🚀
25 lines (24 loc) • 1.37 kB
TypeScript
import { Abon } from "./abon";
import { ChangeListener, UnsubscribeFn, ValueHandler } from "./types";
/** Subscribe to, retrieve, and asynchronously update a value, where an action to set a value can be interrupted.
* `AbonAsync` is not intended to be used by itself, but rather to be extended and implementing the `set` method. */
export declare class AbonAsync<T> implements Omit<Abon<T>, "set" | "use"> {
private __dispatchId?;
private __previousDispatchId?;
private __promiseNotifier?;
current: T;
constructor(initial?: T);
set(valueOrPromise: T | Promise<T>, onSet?: () => void | Promise<void>): Promise<this>;
set(promise: Promise<T>, onSet?: () => void | Promise<void>): Promise<this>;
set(value: T): Promise<this>;
dispatch<T>(promise: Promise<T>, onUninterrupted: (resolved: T) => void | Promise<void>): Promise<this>;
get promise(): Promise<T>;
subscribe(listener: ChangeListener<T>): UnsubscribeFn;
handle(handler: ValueHandler<T>): UnsubscribeFn;
use(): this;
useSubscription(listener: ChangeListener<T>, deps?: readonly any[]): void;
useHandler(handler: ValueHandler<T>, deps?: readonly any[]): void;
notify(): void;
static use<T>(initial?: () => T, deps?: readonly any[]): AbonAsync<T>;
static useRef<T>(initial?: () => T, deps?: readonly any[]): AbonAsync<T>;
}