class-based-react-hooks
Version:
Create React hooks using classes - with hookDidMount, hookWillUpdate, etc.
32 lines (31 loc) • 1.59 kB
TypeScript
declare type Rerender = (func: (num: number) => number) => void;
declare type Callback = () => void;
export declare abstract class ReactHook<Args extends any[], State extends {}, Return> {
constructor(args: Args, state: State);
protected state: State;
protected args: Args;
protected forceUpdate(callback?: Callback): void;
protected setState(update: Partial<State>, callback?: Callback): void;
protected abstract render(): Return;
protected hookWillMount(): void;
protected hookDidMount(): void;
protected hookWillUpdate(nextArgs: Args, nextState: State): void;
protected hookDidUpdate(prevArgs: Args, prevState: State): void;
protected hookWillUnmount(): void;
protected getDerivedStateFromArgs(this: {}, nextArgs: Args, prevState: State): null | Partial<State>;
private _prevState;
private _prevArgs;
private _nextState;
private _didMountRan;
private _updateCallbacks;
private _updater;
__internal_beforeFirstRender(updater: Rerender): void;
__internal_beforeSubsequentRender(nextArgs: Args): void;
__internal_deriveStateAndRender(): Return;
__internal_afterRender: () => void;
__internal_unmountEffect: () => (() => void);
}
declare type HookClass<Args extends any[], State extends {}, Return> = new (args: Args) => ReactHook<Args, State, Return>;
declare type HookFunction<Args extends any[], Return> = (...args: Args) => Return;
export declare function createHook<Args extends any[], State extends {}, Return>(Class: HookClass<Args, State, Return>): HookFunction<Args, Return>;
export {};