UNPKG

abon

Version:

Flexible state management for React 🚀

25 lines (24 loc) • 1.37 kB
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>; }